{"id":2509,"date":"2026-03-03T21:51:30","date_gmt":"2026-03-03T21:51:30","guid":{"rendered":"https:\/\/www.beraterium.de\/?page_id=2509"},"modified":"2026-06-06T00:43:21","modified_gmt":"2026-06-05T22:43:21","slug":"questionnaire-1","status":"publish","type":"page","link":"https:\/\/www.beraterium.de\/de\/questionnaire-1\/","title":{"rendered":"Questionnaire"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2509\" class=\"elementor elementor-2509\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fd670a8 e-flex e-con-boxed wcf-starter-animations-none wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"fd670a8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-77db718 elementor-widget elementor-widget-html\" data-id=\"77db718\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <title>Questionnaire \u2014 Risk Management Culture and NPD Performance<\/title>\n  <style>\n    :root {\n      --blue: #2563eb;\n      --blue-hover: #1d4ed8;\n      --blue-light: #eff6ff;\n      --grey-hover: #f3f4f6;\n      --grey-text: #6b7280;\n      --error: #dc2626;\n    }\n\n    * { box-sizing: border-box; }\n    body {\n      font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;\n      max-width: 720px;\n      margin: 0 auto;\n      padding: 1.5em 1.5em 3em;\n      line-height: 1.6;\n      color: #222;\n      background: #fafafa;\n    }\n\n    .section { display: none; }\n    .section.active { display: block; }\n    .section h2 { font-size: 1.35em; margin-top: 0; border-bottom: 1px solid #e5e7eb; padding-bottom: 0.3em; }\n    .section h3 { font-size: 1.1em; margin: 1.2em 0 0.6em; color: #374151; }\n    .section p { margin: 0.6em 0; }\n    .section ul { padding-left: 1.5em; margin: 0.5em 0; }\n    .section ul li { margin: 0.3em 0; }\n\n    .progress-wrap {\n      margin: 0 0 1.2em;\n      display: none;\n    }\n    .progress-wrap.show { display: block; }\n    .progress-label {\n      display: flex;\n      justify-content: space-between;\n      font-size: 0.9em;\n      color: #4b5563;\n      margin-bottom: 0.3em;\n    }\n    .progress-track {\n      width: 100%;\n      height: 8px;\n      background: #e5e7eb;\n      border-radius: 999px;\n      overflow: hidden;\n    }\n    .progress-fill {\n      height: 100%;\n      width: 0%;\n      background: var(--blue);\n      transition: width 0.2s;\n    }\n\n    .intro-box {\n      background: #f9fafb;\n      border-left: 4px solid var(--blue);\n      padding: 1em 1.2em;\n      margin: 1em 0;\n      border-radius: 0 6px 6px 0;\n    }\n\n    \/* Welcome screen *\/\n    .welcome-screen {\n      text-align: center;\n      padding: 2em 0;\n    }\n    .hse-logo-main {\n      width: 120px;\n      height: auto;\n      margin: 0 auto 0.8em;\n      display: block;\n    }\n    .welcome-screen h1 { font-size: 1.8em; margin-bottom: 0.5em; }\n    .welcome-screen p { margin: 1em 0; max-width: 560px; margin-left: auto; margin-right: auto; }\n    .btn-start {\n      display: inline-block;\n      background: var(--blue);\n      color: white;\n      padding: 0.9em 2.5em;\n      font-size: 1.1em;\n      border: none;\n      border-radius: 8px;\n      cursor: pointer;\n      margin-top: 1.5em;\n      transition: background 0.2s;\n      text-decoration: none;\n    }\n    .btn-start:hover { background: var(--blue-hover); }\n    .btn-secondary {\n      display: inline-block;\n      margin-top: 0.8em;\n      background: #ffffff;\n      color: var(--blue);\n      border: 1px solid #cbd5e1;\n      padding: 0.7em 1.4em;\n      font-size: 0.95em;\n      border-radius: 8px;\n      cursor: pointer;\n      transition: background 0.2s, border-color 0.2s;\n    }\n    .btn-secondary:hover {\n      background: #f8fafc;\n      border-color: #94a3b8;\n    }\n    .lang-switcher {\n      display: flex;\n      justify-content: center;\n      gap: 0.8em;\n      margin: 0.6em 0 1.2em;\n      flex-wrap: wrap;\n    }\n    .lang-btn {\n      border: 1px solid #d1d5db;\n      background: #fff;\n      border-radius: 10px;\n      padding: 0.5em 0.8em;\n      min-width: 88px;\n      cursor: pointer;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 0.2em;\n    }\n    .lang-btn:hover { background: #f8fafc; }\n    .lang-btn.active {\n      border-color: var(--blue);\n      background: var(--blue-light);\n    }\n    .lang-btn .flag { font-size: 1.35em; line-height: 1; }\n    .lang-btn .name { font-size: 0.8em; color: #334155; }\n\n    \/* Screening & demographics *\/\n    .question-block {\n      background: white;\n      border-radius: 8px;\n      padding: 1.2em;\n      margin: 1em 0;\n      border: 1px solid #e5e7eb;\n    }\n    .question-block label { display: block; margin: 0.5em 0; cursor: pointer; }\n    .question-block input[type=\"radio\"], .question-block input[type=\"checkbox\"] { margin-right: 0.5em; }\n    .question-block input[type=\"text\"], .question-block input[type=\"number\"], .question-block select {\n      width: 100%;\n      max-width: 400px;\n      padding: 0.5em;\n      margin-top: 0.3em;\n      border: 1px solid #d1d5db;\n      border-radius: 6px;\n    }\n    .question-block select { cursor: pointer; }\n    .question-block .required { color: var(--error); }\n    .error-msg { color: var(--error); font-size: 0.9em; margin-top: 0.3em; display: none; }\n    .error-msg.show { display: block; }\n\n    .submit-status { margin-top: 0.8em; min-height: 1.5em; font-size: 0.95em; }\n    .submit-status.sending { color: var(--blue); }\n    .submit-status.failed { color: var(--error); }\n    .submit-status .btn-retry { margin-top: 0.5em; }\n    .submit-wait-note {\n      margin: 0.5em 0 0.2em;\n      color: #1e40af;\n      font-size: 0.92em;\n      font-weight: 500;\n    }\n\n    \/* MaxDiff: explicit spacers so Cyrillic + <strong> never visually merge (see .maxdiff-sp) *\/\n    .maxdiff-sp {\n      display: inline;\n      white-space: pre;\n      font: inherit;\n      padding: 0;\n      margin: 0;\n      border: 0;\n    }\n    .maxdiff-left-right-reminder {\n      color: #c00;\n      font-weight: 600;\n      font-size: 0.95em;\n      margin: 0 0 0.85em;\n      line-height: 1.45;\n    }\n\n    \/* MaxDiff blocks *\/\n    .maxdiff-set {\n      background: white;\n      border-radius: 8px;\n      padding: 1.2em;\n      margin: 1.2em 0;\n      border: 1px solid #e5e7eb;\n    }\n    .maxdiff-table { width: 100%; border-collapse: collapse; }\n    .maxdiff-table th, .maxdiff-table td { padding: 0.7em; border-bottom: 1px solid #e5e7eb; text-align: center; }\n    .maxdiff-table th { background: #f9fafb; font-weight: 600; font-size: 0.9em; }\n    .maxdiff-table td:first-child { text-align: left; }\n    .maxdiff-factor-simple {\n      display: block;\n      font-weight: 700;\n      font-size: 1.06em;\n      color: #0f172a;\n      line-height: 1.35;\n      margin-bottom: 0.12em;\n    }\n    .maxdiff-factor-main {\n      display: block;\n      font-size: 0.92em;\n      color: #475569;\n      line-height: 1.35;\n    }\n    .maxdiff-cell {\n      width: 48px;\n      height: 48px;\n      border-radius: 50%;\n      border: 2px solid #d1d5db;\n      margin: 0 auto;\n      cursor: pointer;\n      transition: background 0.2s, border-color 0.2s;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 1.2em;\n    }\n    .maxdiff-cell:hover { background: var(--grey-hover); }\n    .maxdiff-cell.selected {\n      background: var(--blue);\n      border-color: var(--blue);\n      color: white;\n    }\n    .anchor-options { margin-top: 1em; }\n    .anchor-option {\n      display: flex;\n      align-items: center;\n      padding: 0.6em 1em;\n      margin: 0.3em 0;\n      border-radius: 6px;\n      cursor: pointer;\n      transition: background 0.2s;\n    }\n    .anchor-option:hover { background: var(--grey-hover); }\n    .anchor-option.selected { background: var(--blue-light); border: 1px solid var(--blue); }\n    .anchor-option input { margin-right: 0.8em; accent-color: var(--blue); }\n\n    \/* Likert slider cards *\/\n    .likert-list {\n      display: grid;\n      gap: 0.9em;\n    }\n    .likert-card {\n      background: white;\n      border: 1px solid #e5e7eb;\n      border-radius: 8px;\n      padding: 1em;\n    }\n    .likert-card p {\n      margin: 0 0 0.8em;\n      font-weight: 500;\n    }\n    .likert-segment-track {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 0.35em;\n      align-items: center;\n    }\n    .likert-segment {\n      height: 10px;\n      border-radius: 999px;\n      border: 1px solid #cbd5e1;\n      background: #eef2f7;\n      cursor: pointer;\n      transition: background 0.15s, border-color 0.15s, transform 0.08s;\n    }\n    .likert-segment:hover {\n      background: #dbeafe;\n      border-color: #93c5fd;\n    }\n    .likert-segment:active {\n      transform: scaleY(0.95);\n    }\n    .likert-segment.selected {\n      background: var(--blue);\n      border-color: var(--blue);\n    }\n    .likert-scale-labels {\n      margin-top: 0.45em;\n      position: relative;\n      height: 2.2em;\n      font-size: 0.78em;\n      color: #4b5563;\n    }\n    .likert-scale-label {\n      position: absolute;\n      top: 0;\n      text-align: center;\n      line-height: 1.2;\n      transform: translateX(-50%);\n      width: 7.2em;\n      cursor: pointer;\n    }\n    .likert-scale-label.pos-1 { left: 0%; transform: translateX(0%); text-align: left; }\n    .likert-scale-label.pos-2 { left: 33.333%; }\n    .likert-scale-label.pos-3 { left: 66.667%; }\n    .likert-scale-label.pos-4 { left: 100%; transform: translateX(-100%); text-align: right; }\n    .likert-scale-label .num {\n      display: block;\n      font-weight: 700;\n      color: #111827;\n    }\n    .likert-current {\n      margin-top: 0.9em;\n      font-size: 0.85em;\n      color: var(--blue);\n      font-weight: 600;\n      min-height: 1.2em;\n    }\n\n    @media (max-width: 768px) {\n      body {\n        padding: 1em 1em 3.1em;\n      }\n      .likert-card {\n        padding: 0.9em;\n      }\n      .likert-segment-track {\n        gap: 0.45em;\n      }\n      .likert-segment {\n        height: 14px;\n      }\n      .likert-scale-labels {\n        height: 2.7em;\n        font-size: 0.74em;\n      }\n      .likert-scale-label {\n        width: 5.6em;\n      }\n      .likert-current {\n        margin-top: 1.05em;\n        font-size: 0.83em;\n      }\n      .btn-nav {\n        padding: 0.75em 1.1em;\n      }\n      .hse-logo-main {\n        width: 95px;\n      }\n      .site-footer-inner {\n        font-size: 0.7em;\n      }\n    }\n\n    \/* Navigation *\/\n    .nav-bar {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      margin-top: 2em;\n      padding-top: 1.5em;\n      border-top: 1px solid #e5e7eb;\n    }\n    .btn-nav {\n      background: var(--blue);\n      color: white;\n      border: none;\n      padding: 0.6em 1.2em;\n      border-radius: 6px;\n      cursor: pointer;\n      font-size: 1em;\n      transition: background 0.2s;\n      display: flex;\n      align-items: center;\n      gap: 0.4em;\n    }\n    .btn-nav:hover { background: var(--blue-hover); }\n    .btn-nav:disabled { background: #9ca3af; cursor: not-allowed; }\n    .btn-nav.back { background: transparent; color: var(--blue); border: 1px solid var(--blue); }\n    .btn-nav.back:hover { background: var(--blue-light); }\n    .section-error {\n      display: none;\n      color: var(--error);\n      margin-top: 0.8em;\n      font-size: 0.92em;\n    }\n    .section-error.show { display: block; }\n    .set-error {\n      display: none;\n      color: var(--error);\n      margin-top: 0.55em;\n      font-size: 0.84em;\n      line-height: 1.4;\n    }\n    .set-error.show { display: block; }\n    .set-error-link {\n      color: var(--error);\n      text-decoration: underline;\n      cursor: pointer;\n      background: none;\n      border: none;\n      padding: 0;\n      font: inherit;\n    }\n    .set-help {\n      margin: 0.5em 0 0.6em;\n      color: #374151;\n      font-size: 0.88em;\n      background: #f8fafc;\n      border: 1px solid #e2e8f0;\n      border-radius: 6px;\n      padding: 0.45em 0.7em;\n    }\n\n    .site-footer {\n      position: fixed;\n      left: 0;\n      right: 0;\n      bottom: 0;\n      background: rgba(255, 255, 255, 0.95);\n      border-top: 1px solid #e5e7eb;\n      padding: 0.3em 0.8em;\n      z-index: 20;\n      backdrop-filter: blur(3px);\n    }\n    .site-footer-inner {\n      max-width: 720px;\n      margin: 0 auto;\n      display: flex;\n      align-items: center;\n      gap: 0.5em;\n      font-size: 0.76em;\n      color: #4b5563;\n    }\n    .site-footer-logo {\n      width: 18px;\n      height: 18px;\n      border-radius: 50%;\n      flex-shrink: 0;\n    }\n\n    \/* Thank you screen *\/\n    .thank-you-screen {\n      text-align: center;\n      padding: 3em 1em;\n    }\n    .thank-you-screen h2 { font-size: 1.6em; color: var(--blue); }\n  <\/style>\n<\/head>\n<body>\n  <div id=\"progressWrap\" class=\"progress-wrap\">\n    <div class=\"progress-label\">\n      <span id=\"progressText\">Step 1 of 6<\/span>\n      <span id=\"progressPercent\">0%<\/span>\n    <\/div>\n    <div class=\"progress-track\">\n      <div id=\"progressFill\" class=\"progress-fill\"><\/div>\n    <\/div>\n  <\/div>\n  <!-- Welcome \/ Research Explanation -->\n  <section id=\"welcome\" class=\"section active\">\n    <div class=\"welcome-screen\">\n      <div class=\"lang-switcher\" id=\"langSwitcher\">\n        <button type=\"button\" class=\"lang-btn active\" data-lang=\"en\">\n          <span class=\"flag\">\ud83c\uddec\ud83c\udde7<\/span>\n          <span class=\"name\">English<\/span>\n        <\/button>\n        <button type=\"button\" class=\"lang-btn\" data-lang=\"ru\">\n          <span class=\"flag\">\ud83c\uddf7\ud83c\uddfa<\/span>\n          <span class=\"name\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439<\/span>\n        <\/button>\n        <button type=\"button\" class=\"lang-btn\" data-lang=\"zh\">\n          <span class=\"flag\">\ud83c\udde8\ud83c\uddf3<\/span>\n          <span class=\"name\">\u4e2d\u6587<\/span>\n        <\/button>\n      <\/div>\n      <img decoding=\"async\" src=\"https:\/\/hedclub.com\/data\/universities\/337\/logo\/B27HavG_DBht3lyCByOy.png\" alt=\"HSE logo\" class=\"hse-logo-main\">\n      <h1>Risk Management Culture and NPD Performance<\/h1>\n      <p><strong>Welcome.<\/strong> This questionnaire is part of my current master's thesis research. The study examines how risk management culture relates to new product development performance in companies.<\/p>\n      <p><strong>What is NPD?<\/strong> NPD means <em>New Product Development<\/em>, the process by which companies design, test, and launch new products or services.<\/p>\n      <p><strong>What is the Risk Awareness Index?<\/strong> It is an index based on your MaxDiff and scale responses, showing how risk-related factors are perceived and how strongly they are reflected in actual project practice.<\/p>\n      <p>My name is <strong>Till Blania<\/strong>. I am a master student at <strong>HSE Saint Petersburg<\/strong> in the program <strong>International Business in International Markets<\/strong>. This survey is conducted for the master thesis I am currently writing.<\/p>\n      <p><strong>Data collection notice:<\/strong> Data will be collected and processed anonymously. No personal data are processed or stored in this questionnaire.<\/p>\n      <p>Your responses will be anonymised and used only for academic purposes. Completing the survey takes approximately 10 minutes.<\/p>\n      <button type=\"button\" class=\"btn-start\" id=\"btnStart\">Start now<\/button>\n      <div>\n        <button type=\"button\" class=\"btn-secondary\" id=\"btnDownloadOverview\">Download Research Overview (PDF)<\/button>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- Screening -->\n  <section id=\"screening\" class=\"section\">\n    <h2>Screening<\/h2>\n    <div class=\"intro-box\">\n      <p>Please answer the following to confirm eligibility for this study.<\/p>\n    <\/div>\n    <div class=\"question-block\" id=\"q-screening-s1\" data-required>\n      <p><strong>1. Does your company develop new products or services as part of its core business?<\/strong> <span class=\"required\">*<\/span><\/p>\n      <label><input type=\"radio\" name=\"s1\" value=\"yes\"> Yes<\/label>\n      <label><input type=\"radio\" name=\"s1\" value=\"no\"> No<\/label>\n      <span class=\"error-msg\" data-error=\"s1\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-screening-s2\" data-required>\n      <p><strong>2. Is your company a small or medium-sized enterprise (fewer than 250 employees)?<\/strong> <span class=\"required\">*<\/span> (Larger companies can also continue.)<\/p>\n      <label><input type=\"radio\" name=\"s2\" value=\"yes\"> Yes<\/label>\n      <label><input type=\"radio\" name=\"s2\" value=\"no\"> No<\/label>\n      <span class=\"error-msg\" data-error=\"s2\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-screening-s3\" data-required>\n      <p><strong>3. Is your company in the tech industry?<\/strong> <span class=\"required\">*<\/span> (e.g. software, IT, electronics, engineering, medical devices)<\/p>\n      <label><input type=\"radio\" name=\"s3\" value=\"yes\"> Yes<\/label>\n      <label><input type=\"radio\" name=\"s3\" value=\"no\"> No<\/label>\n      <span class=\"error-msg\" data-error=\"s3\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-screening-s4\" data-required>\n      <p><strong>4. Do you agree that your anonymous questionnaire data may be used for this master's thesis research?<\/strong> <span class=\"required\">*<\/span><\/p>\n      <label><input type=\"radio\" name=\"s4\" value=\"yes\"> Yes, I agree<\/label>\n      <label><input type=\"radio\" name=\"s4\" value=\"no\"> No, I do not agree<\/label>\n      <span class=\"error-msg\" data-error=\"s4\">This answer is mandatory.<\/span>\n    <\/div>\n    <div id=\"screening-ineligible\" style=\"display:none; padding:1em; background:#fef2f2; border-radius:8px; color:var(--error); margin-top:1em;\">\n      Thank you for your time. Unfortunately, this survey is not applicable if your company does not run NPD activities or if consent is not given. You may close this page.\n    <\/div>\n    <div id=\"error-screening\" class=\"section-error\"><\/div>\n    <div class=\"nav-bar\">\n      <button type=\"button\" class=\"btn-nav back\" onclick=\"prevSection()\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn-nav\" onclick=\"validateAndNext('screening')\">Next \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- General Information -->\n  <section id=\"demographics\" class=\"section\">\n    <h2>General Information<\/h2>\n    <div class=\"intro-box\">\n      <p>Please provide some basic information about your company and your role. This helps us understand the context of your responses.<\/p>\n    <\/div>\n    <div class=\"question-block\" id=\"q-demographics-d1\" data-required>\n      <p><strong>Country<\/strong> <span class=\"required\">*<\/span><\/p>\n      <select name=\"d1\" id=\"d1\">\n        <option value=\"\">\u2014 Select \u2014<\/option>\n        <option value=\"Russia\">Russia<\/option>\n        <option value=\"China\">China<\/option>\n        <option value=\"India\">India<\/option>\n        <option value=\"Pakistan\">Pakistan<\/option>\n        <option value=\"South Korea\">South Korea<\/option>\n      <\/select>\n      <span class=\"error-msg\" data-error=\"d1\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-demographics-d2\" data-required>\n      <p><strong>Company size (employees)<\/strong> <span class=\"required\">*<\/span><\/p>\n      <p style=\"font-size:0.9em;color:#6b7280;margin:0.2em 0 0.5em;\">(EU\/Russia definition: Micro &lt;15, Small 16\u2013100, Medium 101\u2013250, Large &gt;250)<\/p>\n      <label><input type=\"radio\" name=\"d2\" value=\"1-15\"> 1\u201315 (Micro)<\/label>\n      <label><input type=\"radio\" name=\"d2\" value=\"16-100\"> 16\u2013100 (Small)<\/label>\n      <label><input type=\"radio\" name=\"d2\" value=\"101-250\"> 101\u2013250 (Medium)<\/label>\n      <label><input type=\"radio\" name=\"d2\" value=\"251+\"> Above 250 (Large)<\/label>\n      <span class=\"error-msg\" data-error=\"d2\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-demographics-d3\" data-required>\n      <p><strong>Primary industry sector<\/strong> <span class=\"required\">*<\/span><\/p>\n      <label><input type=\"radio\" name=\"d3\" value=\"Software\"> Software<\/label>\n      <label><input type=\"radio\" name=\"d3\" value=\"IT\"> IT services<\/label>\n      <label><input type=\"radio\" name=\"d3\" value=\"Electronics\"> Electronics<\/label>\n      <label><input type=\"radio\" name=\"d3\" value=\"Engineering\"> Engineering<\/label>\n      <label><input type=\"radio\" name=\"d3\" value=\"Medical\"> Medical devices<\/label>\n      <label><input type=\"radio\" name=\"d3\" value=\"Financial\"> Financial sector<\/label>\n      <label><input type=\"radio\" name=\"d3\" value=\"SocialMedia\"> Social Media &amp; Communication<\/label>\n      <label><input type=\"radio\" name=\"d3\" value=\"Other\"> Other<\/label>\n      <p class=\"other-note\" id=\"d3-other-note\">If Other, please type your industry:<\/p>\n      <input type=\"text\" name=\"d3_other\" id=\"d3_other\" placeholder=\"Please type your industry\" style=\"display:none;\">\n      <span class=\"error-msg\" data-error=\"d3_other\">This answer is mandatory when Other is selected.<\/span>\n      <span class=\"error-msg\" data-error=\"d3\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-demographics-d4\" data-required>\n      <p><strong>Years in operation of your company<\/strong> <span class=\"required\">*<\/span><\/p>\n      <input type=\"number\" name=\"d4\" id=\"d4\" min=\"0\" placeholder=\"e.g. 5\">\n      <span class=\"error-msg\" data-error=\"d4\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-demographics-d5\" data-required>\n      <p><strong>NPD projects in the last 3 years<\/strong> <span class=\"required\">*<\/span><\/p>\n      <label><input type=\"radio\" name=\"d5\" value=\"0-2\"> 0\u20132<\/label>\n      <label><input type=\"radio\" name=\"d5\" value=\"3-5\"> 3\u20135<\/label>\n      <label><input type=\"radio\" name=\"d5\" value=\"6-10\"> 6\u201310<\/label>\n      <label><input type=\"radio\" name=\"d5\" value=\"11+\"> 11 or more<\/label>\n      <span class=\"error-msg\" data-error=\"d5\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-demographics-d6\" data-required>\n      <p><strong>Job title or main role<\/strong> <span class=\"required\">*<\/span><\/p>\n      <input type=\"text\" name=\"d6\" id=\"d6\" placeholder=\"e.g. Project Manager\">\n      <span class=\"error-msg\" data-error=\"d6\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-demographics-d7\" data-required>\n      <p><strong>Years of experience in NPD or project management<\/strong> <span class=\"required\">*<\/span><\/p>\n      <input type=\"number\" name=\"d7\" id=\"d7\" min=\"0\" placeholder=\"e.g. 3\">\n      <span class=\"error-msg\" data-error=\"d7\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-demographics-d8\" data-required>\n      <p><strong>Dedicated risk management department or function?<\/strong> <span class=\"required\">*<\/span><\/p>\n      <label><input type=\"radio\" name=\"d8\" value=\"Yes\"> Yes<\/label>\n      <label><input type=\"radio\" name=\"d8\" value=\"No\"> No<\/label>\n      <span class=\"error-msg\" data-error=\"d8\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-demographics-d9\" data-required>\n      <p><strong>How familiar are you with the details of your company's NPD projects?<\/strong> <span class=\"required\">*<\/span><\/p>\n      <label><input type=\"radio\" name=\"d9\" value=\"Not familiar\"> Not familiar<\/label>\n      <label><input type=\"radio\" name=\"d9\" value=\"Somewhat familiar\"> Somewhat familiar<\/label>\n      <label><input type=\"radio\" name=\"d9\" value=\"Familiar\"> Familiar<\/label>\n      <label><input type=\"radio\" name=\"d9\" value=\"Very familiar\"> Very familiar<\/label>\n      <label><input type=\"radio\" name=\"d9\" value=\"Extremely familiar\"> Extremely familiar<\/label>\n      <span class=\"error-msg\" data-error=\"d9\">This answer is mandatory.<\/span>\n    <\/div>\n    <div class=\"question-block\" id=\"q-demographics-d10\" data-required>\n      <p><strong>What is your primary role in NPD?<\/strong> <span class=\"required\">*<\/span><\/p>\n      <label><input type=\"radio\" name=\"d10\" value=\"Project Manager\"> Project Manager<\/label>\n      <label><input type=\"radio\" name=\"d10\" value=\"Team Member\"> Team Member<\/label>\n      <label><input type=\"radio\" name=\"d10\" value=\"Senior Executive\"> Senior Executive<\/label>\n      <label><input type=\"radio\" name=\"d10\" value=\"Marketing\/Sales\"> Marketing\/Sales<\/label>\n      <label><input type=\"radio\" name=\"d10\" value=\"R&D\/Engineering\"> R&amp;D\/Engineering<\/label>\n      <label><input type=\"radio\" name=\"d10\" value=\"Other\"> Other<\/label>\n      <p class=\"other-note\" id=\"d10-other-note\">If Other, please type your role:<\/p>\n      <input type=\"text\" name=\"d10_other\" id=\"d10_other\" placeholder=\"Please type your role\" style=\"display:none;\">\n      <span class=\"error-msg\" data-error=\"d10_other\">This answer is mandatory when Other is selected.<\/span>\n      <span class=\"error-msg\" data-error=\"d10\">This answer is mandatory.<\/span>\n    <\/div>\n    <div id=\"error-demographics\" class=\"section-error\"><\/div>\n    <div class=\"nav-bar\">\n      <button type=\"button\" class=\"btn-nav back\" onclick=\"prevSection()\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn-nav\" onclick=\"validateAndNext('demographics')\">Next \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- MaxDiff Part 1: Perceived Importance (Block 1\/3) -->\n  <section id=\"maxdiff1a\" class=\"section\">\n    <h2>Part 1 \u2014 Perceived Importance (Block 1 of 3)<\/h2>\n    <div class=\"intro-box intro-box--maxdiff\">\n      <p class=\"maxdiff-left-right-reminder\">! <strong>How to use the grid:<\/strong> The <strong>factor<\/strong> text is in the first column. In the two columns to the right, mark <strong>one<\/strong> strongest and <strong>one<\/strong> weakest for this question (two different factors per set).<\/p>\n      <p class=\"maxdiff-intro\"><strong>What Part 1 is about:<\/strong> We ask what is <strong>most and least important for your company\u2019s NPD success<\/strong> \u2014 the factors you believe <strong>should<\/strong> matter when developing new products (your view of <strong>priority<\/strong>, not what happened last week).<br><br><strong>What you do:<\/strong> In each set of four factors, choose exactly <strong>one<\/strong> <strong>most important<\/strong> and exactly <strong>one<\/strong> <strong>least important<\/strong> for that success.<\/p>\n      <p class=\"maxdiff-intro\"><strong>How the task works:<\/strong> In every set, pick only one \u201cbest\u201d and one \u201cworst\u201d (two different items), then answer the short follow-up about those four factors. You may sometimes see the same statements again; this is intentional in MaxDiff. Repeating factors in different sets helps us measure which factors you consistently prefer.<\/p>\n      <p class=\"maxdiff-intro\"><strong>Why:<\/strong> This shows which risk areas your organisation treats as priorities, without asking you to rate every item separately.<\/p>\n    <\/div>\n    <div id=\"maxdiff1a-sets\"><\/div>\n    <div id=\"error-maxdiff1a\" class=\"section-error\"><\/div>\n    <div class=\"nav-bar\">\n      <button type=\"button\" class=\"btn-nav back\" onclick=\"prevSection()\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn-nav\" onclick=\"validateAndNext('maxdiff1a')\">Next \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <section id=\"maxdiff1b\" class=\"section\">\n    <h2>Part 1 \u2014 Perceived Importance (Block 2 of 3)<\/h2>\n    <div class=\"intro-box intro-box--maxdiff\">\n      <p class=\"maxdiff-left-right-reminder\">! <strong>How to use the grid:<\/strong> The <strong>factor<\/strong> text is in the first column. In the two columns to the right, mark <strong>one<\/strong> strongest and <strong>one<\/strong> weakest for this question (two different factors per set).<\/p>\n      <p class=\"maxdiff-intro\"><strong>Reminder:<\/strong> In Part 1, choose based on what <strong>should be most important<\/strong> for NPD success. Please continue with the next 5 MaxDiff sets. Select exactly one most important and one least important item in each set, then answer the anchor question. Seeing some statements more than once is normal in MaxDiff and part of the survey design.<\/p>\n    <\/div>\n    <div id=\"maxdiff1b-sets\"><\/div>\n    <div id=\"error-maxdiff1b\" class=\"section-error\"><\/div>\n    <div class=\"nav-bar\">\n      <button type=\"button\" class=\"btn-nav back\" onclick=\"prevSection()\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn-nav\" onclick=\"validateAndNext('maxdiff1b')\">Next \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <section id=\"maxdiff1c\" class=\"section\">\n    <h2>Part 1 \u2014 Perceived Importance (Block 3 of 3)<\/h2>\n    <div class=\"intro-box intro-box--maxdiff\">\n      <p class=\"maxdiff-left-right-reminder\">! <strong>How to use the grid:<\/strong> The <strong>factor<\/strong> text is in the first column. In the two columns to the right, mark <strong>one<\/strong> strongest and <strong>one<\/strong> weakest for this question (two different factors per set).<\/p>\n      <p class=\"maxdiff-intro\"><strong>Reminder:<\/strong> In Part 1, choose based on what <strong>should be most important<\/strong> for NPD success. This is the final block for Part 1. Please complete all 5 sets before continuing. Seeing some statements more than once is normal in MaxDiff and part of the survey design.<\/p>\n    <\/div>\n    <div id=\"maxdiff1c-sets\"><\/div>\n    <div id=\"error-maxdiff1c\" class=\"section-error\"><\/div>\n    <div class=\"nav-bar\">\n      <button type=\"button\" class=\"btn-nav back\" onclick=\"prevSection()\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn-nav\" onclick=\"validateAndNext('maxdiff1c')\">Next \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- MaxDiff Part 2: Actual Influence (Block 1\/3) -->\n  <section id=\"maxdiff2a\" class=\"section\">\n    <h2>Part 2 \u2014 Actual Influence (Block 1 of 3)<\/h2>\n    <div class=\"intro-box intro-box--maxdiff\">\n      <p class=\"maxdiff-left-right-reminder\">! <strong>How to use the grid:<\/strong> The <strong>factor<\/strong> text is in the first column. In the two columns to the right, mark <strong>one<\/strong> strongest and <strong>one<\/strong> weakest for this question (two different factors per set).<\/p>\n      <p class=\"maxdiff-intro\"><strong>What Part 2 is about:<\/strong> The <strong>same<\/strong> factors, but now about <strong>real practice<\/strong> \u2014 what <strong>actually influences<\/strong> decisions and behaviour in your NPD projects, <strong>not<\/strong> what you think <strong>should<\/strong> matter.<br><br><strong>What you do:<\/strong> In each set, choose the factor that influences your NPD projects the <strong>most<\/strong> and the one that influences them the <strong>least<\/strong> in <strong>day-to-day<\/strong> work.<\/p>\n      <p class=\"maxdiff-intro\"><strong>How the task works:<\/strong> Same steps as Part 1 (one strongest, one weakest, then the follow-up), but the column headings refer to <strong>actual influence<\/strong>, not importance. You may sometimes see the same statements again; this is intentional in MaxDiff. Repeating factors in different sets helps us measure which factors you consistently prefer.<\/p>\n      <p class=\"maxdiff-intro\"><strong>Why:<\/strong> Comparing Part 1 (what you consider important) with Part 2 (what really drives projects) supports our research on <strong>risk awareness and alignment<\/strong>.<\/p>\n    <\/div>\n    <div id=\"maxdiff2a-sets\"><\/div>\n    <div id=\"error-maxdiff2a\" class=\"section-error\"><\/div>\n    <div class=\"nav-bar\">\n      <button type=\"button\" class=\"btn-nav back\" onclick=\"prevSection()\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn-nav\" onclick=\"validateAndNext('maxdiff2a')\">Next \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <section id=\"maxdiff2b\" class=\"section\">\n    <h2>Part 2 \u2014 Actual Influence (Block 2 of 3)<\/h2>\n    <div class=\"intro-box intro-box--maxdiff\">\n      <p class=\"maxdiff-left-right-reminder\">! <strong>How to use the grid:<\/strong> The <strong>factor<\/strong> text is in the first column. In the two columns to the right, mark <strong>one<\/strong> strongest and <strong>one<\/strong> weakest for this question (two different factors per set).<\/p>\n      <p class=\"maxdiff-intro\"><strong>Reminder:<\/strong> In Part 2, choose based on what <strong>actually influences<\/strong> NPD projects in daily practice. Please continue with the next 5 MaxDiff sets for actual influence. Complete best, worst, and anchor for each set. Seeing some statements more than once is normal in MaxDiff and part of the survey design.<\/p>\n    <\/div>\n    <div id=\"maxdiff2b-sets\"><\/div>\n    <div id=\"error-maxdiff2b\" class=\"section-error\"><\/div>\n    <div class=\"nav-bar\">\n      <button type=\"button\" class=\"btn-nav back\" onclick=\"prevSection()\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn-nav\" onclick=\"validateAndNext('maxdiff2b')\">Next \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <section id=\"maxdiff2c\" class=\"section\">\n    <h2>Part 2 \u2014 Actual Influence (Block 3 of 3)<\/h2>\n    <div class=\"intro-box intro-box--maxdiff\">\n      <p class=\"maxdiff-left-right-reminder\">! <strong>How to use the grid:<\/strong> The <strong>factor<\/strong> text is in the first column. In the two columns to the right, mark <strong>one<\/strong> strongest and <strong>one<\/strong> weakest for this question (two different factors per set).<\/p>\n      <p class=\"maxdiff-intro\"><strong>Reminder:<\/strong> In Part 2, choose based on what <strong>actually influences<\/strong> NPD projects in daily practice. This is the final block for Part 2. Please complete all 5 sets before moving to the next section. Seeing some statements more than once is normal in MaxDiff and part of the survey design.<\/p>\n    <\/div>\n    <div id=\"maxdiff2c-sets\"><\/div>\n    <div id=\"error-maxdiff2c\" class=\"section-error\"><\/div>\n    <div class=\"nav-bar\">\n      <button type=\"button\" class=\"btn-nav back\" onclick=\"prevSection()\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn-nav\" onclick=\"validateAndNext('maxdiff2c')\">Next \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- Likert: NPD Performance -->\n  <section id=\"likert-npd\" class=\"section\">\n    <h2>NPD Project Success<\/h2>\n    <div class=\"intro-box\">\n      <p><strong>What we ask:<\/strong> Thinking about the NPD projects your company has completed in the last 3 years, please indicate your level of agreement with the following statements. For each statement, select one of the four bars to show how much it applies to your company (on average or in general).<\/p>\n      <p><strong>Scale:<\/strong> 1 = Does not apply to us, 2 = Rather does not apply, 3 = Rather applies, 4 = Fully applies to us.<\/p>\n    <\/div>\n    <div class=\"likert-list\" id=\"likert-npd-body\"><\/div>\n    <div id=\"error-likert-npd\" class=\"section-error\"><\/div>\n    <div class=\"nav-bar\">\n      <button type=\"button\" class=\"btn-nav back\" onclick=\"prevSection()\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn-nav\" onclick=\"validateAndNext('likert-npd')\">Next \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- Likert: Mediators -->\n  <section id=\"likert-mediators\" class=\"section\">\n    <h2>How Your Organisation Handles NPD Projects<\/h2>\n    <div class=\"intro-box\">\n      <p><strong>What we ask:<\/strong> For each statement, use the same slider scale to indicate how much it applies to your organisation.<\/p>\n    <\/div>\n    <div class=\"likert-list\" id=\"likert-mediators-body\"><\/div>\n    <div id=\"error-likert-mediators\" class=\"section-error\"><\/div>\n    <div id=\"submit-status\" class=\"submit-status\" aria-live=\"polite\"><\/div>\n    <p id=\"submitWaitNote\" class=\"submit-wait-note\">Please do not close this page and wait for submission after pressing Submit.<\/p>\n    <div class=\"nav-bar\">\n      <button type=\"button\" class=\"btn-nav back\" id=\"btnBackMediators\" onclick=\"prevSection()\">\u2190 Back<\/button>\n      <button type=\"button\" class=\"btn-nav\" id=\"btnSubmit\" onclick=\"validateAndNext('likert-mediators')\">Submit \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- Thank You -->\n  <section id=\"thankyou\" class=\"section\">\n    <div class=\"thank-you-screen\">\n      <img decoding=\"async\" src=\"https:\/\/hedclub.com\/data\/universities\/337\/logo\/B27HavG_DBht3lyCByOy.png\" alt=\"HSE logo\" class=\"hse-logo-main\">\n      <h2>Thank you for taking your time to participate in my research<\/h2>\n      <p>Thank you very much for completing this questionnaire. Your answers help me directly to finalise my master's thesis research.<\/p>\n      <p>Every single response and every data point is important for the quality of this research and for the final Risk Awareness Index analysis.<\/p>\n      <p>Thank you again for your support.<\/p>\n      <p><strong>Till Blania<\/strong><br>Master Student, HSE Saint Petersburg<br>International Business in Asian Pacific Market<\/p>\n      <p>For questions, please contact: <strong>till.blania@gmail.com<\/strong><\/p>\n    <\/div>\n  <\/section>\n\n  <footer class=\"site-footer\">\n    <div class=\"site-footer-inner\">\n      <img decoding=\"async\" src=\"https:\/\/hedclub.com\/data\/universities\/337\/logo\/B27HavG_DBht3lyCByOy.png\" alt=\"HSE logo small\" class=\"site-footer-logo\">\n      <span>&copy; Till Blania, March 2026<\/span>\n    <\/div>\n  <\/footer>\n\n  <script>\n    const SECTIONS = ['welcome', 'screening', 'demographics', 'maxdiff1a', 'maxdiff1b', 'maxdiff1c', 'maxdiff2a', 'maxdiff2b', 'maxdiff2c', 'likert-npd', 'likert-mediators', 'thankyou'];\n    let currentSectionIndex = 0;\n    let sessionStartTime = null;\n    const SCHEMA_VERSION = '2026-03-production-v1';\n    let currentLang = 'en';\n    const I18N = {\n      en: {\n        title: 'Questionnaire \u2014 Risk Management Culture and NPD Performance',\n        welcomeTitle: 'Risk Management Culture and NPD Performance',\n        welcomeP1: '<strong>Welcome.<\/strong> This questionnaire is part of my current master\\'s thesis research. The study examines how risk management culture relates to new product development performance in companies.',\n        welcomeP2: '<strong>What is NPD?<\/strong> NPD means <em>New Product Development<\/em>, the process by which companies design, test, and launch new products or services.',\n        welcomeP3: '<strong>What is the Risk Awareness Index?<\/strong> It is an index based on your MaxDiff and scale responses, showing how risk-related factors are perceived and how strongly they are reflected in actual project practice.',\n        welcomeP4: 'My name is <strong>Till Blania<\/strong>. I am a master student at <strong>HSE Saint Petersburg<\/strong> in the program <strong>International Business in International Markets<\/strong>. This survey is conducted for the master thesis I am currently writing.',\n        welcomeP5: '<strong>Data collection notice:<\/strong> Data will be collected and processed anonymously. No personal data are processed or stored in this questionnaire.',\n        welcomeP6: 'Your responses will be anonymised and used only for academic purposes. Completing the survey takes approximately 10 minutes.',\n        startNow: 'Start now',\n        downloadOverview: 'Download Research Overview (PDF)',\n        screeningTitle: 'Screening',\n        screeningIntro: 'Please answer the following to confirm eligibility for this study.',\n        screeningQ1: '1. Does your company develop new products or services as part of its core business?',\n        screeningQ2: '2. Is your company a small or medium-sized enterprise (fewer than 250 employees)? (Larger companies can also continue.)',\n        screeningQ3: '3. Is your company in the tech industry? (e.g. software, IT, electronics, engineering, medical devices)',\n        screeningQ4: '4. Do you agree that your anonymous questionnaire data may be used for this master\\'s thesis research?',\n        yes: 'Yes',\n        no: 'No',\n        yesAgree: 'Yes, I agree',\n        noAgree: 'No, I do not agree',\n        ineligible: 'Thank you for your time. Unfortunately, this survey is not applicable if your company does not run NPD activities or if consent is not given. You may close this page.',\n        demographicsTitle: 'General Information',\n        demographicsIntro: 'Please provide some basic information about your company and your role. This helps us understand the context of your responses.',\n        d1: 'Country',\n        d2: 'Company size (employees)',\n        d2hint: '(EU\/Russia definition: Micro <15, Small 16\u2013100, Medium 101\u2013250, Large >250)',\n        d3: 'Primary industry sector',\n        d4: 'Years in operation of your company',\n        d5: 'NPD projects in the last 3 years',\n        d6: 'Job title or main role',\n        d7: 'Years of experience in NPD or project management',\n        d8: 'Dedicated risk management department or function?',\n        d9: 'How familiar are you with the details of your company\\'s NPD projects?',\n        d10: 'What is your primary role in NPD?',\n        d3OtherNote: 'If Other, please type your industry:',\n        d10OtherNote: 'If Other, please type your role:',\n        d3OtherPlaceholder: 'Please type your industry',\n        d10OtherPlaceholder: 'Please type your role',\n        maxdiff1aTitle: 'Part 1 \u2014 Perceived Importance (Block 1 of 3)',\n        maxdiff1bTitle: 'Part 1 \u2014 Perceived Importance (Block 2 of 3)',\n        maxdiff1cTitle: 'Part 1 \u2014 Perceived Importance (Block 3 of 3)',\n        maxdiff2aTitle: 'Part 2 \u2014 Actual Influence (Block 1 of 3)',\n        maxdiff2bTitle: 'Part 2 \u2014 Actual Influence (Block 2 of 3)',\n        maxdiff2cTitle: 'Part 2 \u2014 Actual Influence (Block 3 of 3)',\n        maxdiff1aIntro1: '<strong>What Part 1 is about:<\/strong> We ask what is <strong>most and least important for your company\u2019s NPD success<\/strong> \u2014 the factors you believe <strong>should<\/strong> matter when developing new products (your view of <strong>priority<\/strong>, not what happened last week).<br><br><strong>What you do:<\/strong> In each set of four factors, choose exactly <strong>one<\/strong> <strong>most important<\/strong> and exactly <strong>one<\/strong> <strong>least important<\/strong> for that success.',\n        maxdiff1aIntro2: '<strong>How the task works:<\/strong> In every set, pick only one \u201cbest\u201d and one \u201cworst\u201d (two different items), then answer the short follow-up about those four factors. You may sometimes see the same statements again; this is intentional in MaxDiff. Repeating factors in different sets helps us measure which factors you consistently prefer.',\n        maxdiff1aIntro3: '<strong>Why:<\/strong> This shows which risk areas your organisation treats as priorities, without asking you to rate every item separately.',\n        maxdiff1bIntro: '<strong>Reminder:<\/strong> In Part 1, choose based on what <strong>should be most important<\/strong> for NPD success. Please continue with the next 5 MaxDiff sets. Select exactly one most important and one least important item in each set, then answer the anchor question. Seeing some statements more than once is normal in MaxDiff and part of the survey design.',\n        maxdiff1cIntro: '<strong>Reminder:<\/strong> In Part 1, choose based on what <strong>should be most important<\/strong> for NPD success. This is the final block for Part 1. Please complete all 5 sets before continuing. Seeing some statements more than once is normal in MaxDiff and part of the survey design.',\n        maxdiff2aIntro1: '<strong>What Part 2 is about:<\/strong> The <strong>same<\/strong> factors, but now about <strong>real practice<\/strong> \u2014 what <strong>actually influences<\/strong> decisions and behaviour in your NPD projects, <strong>not<\/strong> what you think <strong>should<\/strong> matter.<br><br><strong>What you do:<\/strong> In each set, choose the factor that influences your NPD projects the <strong>most<\/strong> and the one that influences them the <strong>least<\/strong> in <strong>day-to-day<\/strong> work.',\n        maxdiff2aIntro2: '<strong>How the task works:<\/strong> Same steps as Part 1 (one strongest, one weakest, then the follow-up), but the column headings refer to <strong>actual influence<\/strong>, not importance. You may sometimes see the same statements again; this is intentional in MaxDiff. Repeating factors in different sets helps us measure which factors you consistently prefer.',\n        maxdiff2aIntro3: '<strong>Why:<\/strong> Comparing Part 1 (what you consider important) with Part 2 (what really drives projects) supports our research on <strong>risk awareness and alignment<\/strong>.',\n        maxdiff2bIntro: '<strong>Reminder:<\/strong> In Part 2, choose based on what <strong>actually influences<\/strong> NPD projects in daily practice. Please continue with the next 5 MaxDiff sets for actual influence. Complete best, worst, and anchor for each set. Seeing some statements more than once is normal in MaxDiff and part of the survey design.',\n        maxdiff2cIntro: '<strong>Reminder:<\/strong> In Part 2, choose based on what <strong>actually influences<\/strong> NPD projects in daily practice. This is the final block for Part 2. Please complete all 5 sets before moving to the next section. Seeing some statements more than once is normal in MaxDiff and part of the survey design.',\n        maxdiffLeftRightReminder: '! <strong>How to use the grid:<\/strong> The <strong>factor<\/strong> text is in the first column. In the two columns to the right, mark <strong>one<\/strong> strongest and <strong>one<\/strong> weakest for this question (two different factors per set).',\n        npdTitle: 'NPD Project Success',\n        npdIntro1: '<strong>What we ask:<\/strong> Thinking about the NPD projects your company has completed in the last 3 years, please indicate your level of agreement with the following statements. For each statement, select one of the four bars to show how much it applies to your company (on average or in general).',\n        npdIntro2: '<strong>Scale:<\/strong> 1 = Does not apply to us, 2 = Rather does not apply, 3 = Rather applies, 4 = Fully applies to us.',\n        mediatorsTitle: 'How Your Organisation Handles NPD Projects',\n        mediatorsIntro: '<strong>What we ask:<\/strong> For each statement, use the same slider scale to indicate how much it applies to your organisation.',\n        thankYouTitle: 'Thank you for taking your time to participate in my research',\n        thankYouP1: 'Thank you very much for completing this questionnaire. Your answers help me directly to finalise my master\\'s thesis research.',\n        thankYouP2: 'Every single response and every data point is important for the quality of this research and for the final Risk Awareness Index analysis.',\n        thankYouP3: 'Thank you again for your support.',\n        thankYouP4: '<strong>Till Blania<\/strong><br>Master Student, HSE Saint Petersburg<br>International Business in Asian Pacific Market',\n        thankYouContact: 'For questions, please contact: till.blania@gmail.com',\n        back: '\u2190 Back',\n        next: 'Next \u2192',\n        submit: 'Submit \u2192',\n        sending: 'Sending\u2026',\n        sendingWithWait: 'Sending your answers\u2026 Please do not close this page and wait for submission.',\n        submitWaitNote: 'Please do not close this page and wait for submission after pressing Submit.',\n        mandatory: 'This answer is mandatory.',\n        mandatoryList: 'This answer is mandatory. Please complete:',\n        setLabel: (n, t) => `Set ${n} of ${t}`,\n        setHelp: 'Select exactly one best item and one worst item in this set.',\n        factor: 'Factor',\n        mostImportant: 'Most important',\n        leastImportant: 'Least important',\n        influencesMost: 'Influences most',\n        influencesLeast: 'Influences least',\n        anchorQuestion: 'For the four factors above, would you say:',\n        anchorImportanceAll: 'All four are important for our NPD success',\n        anchorImportanceNone: 'None of these are important for our NPD success',\n        anchorImportanceSome: 'Some are important, some are not',\n        anchorInfluenceAll: 'All four actually influence our NPD projects',\n        anchorInfluenceNone: 'None of these actually influence our NPD projects',\n        anchorInfluenceSome: 'Some influence our NPD projects, some do not',\n        scaleShort1: 'Does not apply',\n        scaleShort2: 'Rather does not apply',\n        scaleShort3: 'Rather applies',\n        scaleShort4: 'Fully applies',\n        selectedPrefix: 'Selected:',\n        submissionFailed: 'Submission failed. Please check your connection and try again.',\n        retry: 'Try again',\n        stepText: (s, t) => `Step ${s} of ${t}`,\n        footer: '\u00a9 Till Blania, March 2026'\n      },\n      ru: {\n        title: '\u041e\u043f\u0440\u043e\u0441 \u2014 \u041a\u0443\u043b\u044c\u0442\u0443\u0440\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u043a\u0430\u043c\u0438 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438',\n        welcomeTitle: '\u041a\u0443\u043b\u044c\u0442\u0443\u0440\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u043a\u0430\u043c\u0438 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438',\n        welcomeP1: '<strong>\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c.<\/strong> \u042d\u0442\u043e\u0442 \u043e\u043f\u0440\u043e\u0441\u043d\u0438\u043a \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u043c\u043e\u0435\u0439 \u043c\u0430\u0433\u0438\u0441\u0442\u0435\u0440\u0441\u043a\u043e\u0439 \u0434\u0438\u0441\u0441\u0435\u0440\u0442\u0430\u0446\u0438\u0438. \u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0437\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u043e\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u043a\u0430\u043c\u0438 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445.',\n        welcomeP2: '<strong>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 NPD?<\/strong> NPD \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <em>\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438<\/em> \u2014 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0432 \u0445\u043e\u0434\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u044e\u0442, \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e\u0442 \u0438 \u0432\u044b\u0432\u043e\u0434\u044f\u0442 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0438.',\n        welcomeP3: '<strong>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0418\u043d\u0434\u0435\u043a\u0441 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043a\u043e\u0432?<\/strong> \u042d\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0432\u0430\u0448\u0438\u0445 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 MaxDiff \u0438 \u0448\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u0445, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439, \u043a\u0430\u043a \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0444\u0430\u043a\u0442\u043e\u0440\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0440\u0438\u0441\u043a\u0430\u043c\u0438, \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0438 \u043e\u0442\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.',\n        welcomeP4: '\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 <strong>\u0422\u0438\u043b\u043b \u0411\u043b\u0430\u043d\u0438\u044f<\/strong>. \u042f \u043c\u0430\u0433\u0438\u0441\u0442\u0440\u0430\u043d\u0442 <strong>\u041d\u0418\u0423 \u0412\u0428\u042d \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433<\/strong> \u043f\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 <strong>\u00ab\u041c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u044b\u0439 \u0431\u0438\u0437\u043d\u0435\u0441 \u043d\u0430 \u043c\u0438\u0440\u043e\u0432\u044b\u0445 \u0440\u044b\u043d\u043a\u0430\u0445\u00bb<\/strong>. \u041e\u043f\u0440\u043e\u0441 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u0430\u0433\u0438\u0441\u0442\u0435\u0440\u0441\u043a\u043e\u0439 \u0434\u0438\u0441\u0441\u0435\u0440\u0442\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0438\u0448\u0443.',\n        welcomeP5: '<strong>\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043e \u0441\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445:<\/strong> \u0414\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u043e. \u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0430\u043d\u043a\u0435\u0442\u0435 \u043d\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f.',\n        welcomeP6: '\u0412\u0430\u0448\u0438 \u043e\u0442\u0432\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u0435\u0437\u043b\u0438\u0447\u0435\u043d\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043d\u0430\u0443\u0447\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445. \u0417\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u043e\u0441\u043d\u0438\u043a\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 10 \u043c\u0438\u043d\u0443\u0442.',\n        startNow: '\u041d\u0430\u0447\u0430\u0442\u044c',\n        downloadOverview: '\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f (PDF)',\n        screeningTitle: '\u041e\u0442\u0431\u043e\u0440\u043e\u0447\u043d\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b',\n        screeningIntro: '\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0442\u0432\u0435\u0442\u044c\u0442\u0435 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f\u043c \u0443\u0447\u0430\u0441\u0442\u0438\u044f \u0432 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438.',\n        screeningQ1: '1. \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043b\u0438 \u0432\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u0443\u044e \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u044e \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438?',\n        screeningQ2: '2. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0432\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u043c\u0430\u043b\u044b\u043c \u0438\u043b\u0438 \u0441\u0440\u0435\u0434\u043d\u0438\u043c \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435\u043c (\u043c\u0435\u043d\u0435\u0435 250 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432)? (\u041a\u0440\u0443\u043f\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c.)',\n        screeningQ3: '3. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0432\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439? (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435, IT, \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430, \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u044f, \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435)',\n        screeningQ4: '4. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u044b \u043b\u0438 \u0432\u044b \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432\u0430\u0448\u0438 \u0430\u043d\u043e\u043d\u0438\u043c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u0440\u043e\u0441\u043d\u0438\u043a\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0433\u0438\u0441\u0442\u0435\u0440\u0441\u043a\u043e\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f?',\n        yes: '\u0414\u0430',\n        no: '\u041d\u0435\u0442',\n        yesAgree: '\u0414\u0430, \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d\/\u0441\u043e\u0433\u043b\u0430\u0441\u043d\u0430',\n        noAgree: '\u041d\u0435\u0442, \u043d\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d\/\u043d\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u0430',\n        ineligible: '\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u043c \u0437\u0430 \u0443\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0434\u0430\u043d\u043d\u044b\u0439 \u043e\u043f\u0440\u043e\u0441 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u043d\u0435 \u0432\u0435\u0434\u0435\u0442 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438 \u0438\u043b\u0438 \u0432\u044b \u043d\u0435 \u0434\u0430\u043b\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443.',\n        demographicsTitle: '\u041e\u0431\u0449\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f',\n        demographicsIntro: '\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0438 \u0432\u0430\u0448\u0435\u0439 \u0440\u043e\u043b\u0438. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043c \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u0430\u0448\u0438\u0445 \u043e\u0442\u0432\u0435\u0442\u043e\u0432.',\n        d1: '\u0421\u0442\u0440\u0430\u043d\u0430',\n        d2: '\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 (\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432)',\n        d2hint: '(\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0415\u0421\/\u0420\u043e\u0441\u0441\u0438\u0438: \u041c\u0438\u043a\u0440\u043e <15, \u041c\u0430\u043b\u043e\u0435 16\u2013100, \u0421\u0440\u0435\u0434\u043d\u0435\u0435 101\u2013250, \u041a\u0440\u0443\u043f\u043d\u043e\u0435 >250)',\n        d3: '\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043e\u0442\u0440\u0430\u0441\u043b\u044c',\n        d4: '\u0413\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438',\n        d5: '\u041f\u0440\u043e\u0435\u043a\u0442\u044b NPD \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 3 \u0433\u043e\u0434\u0430',\n        d6: '\u0414\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0440\u043e\u043b\u044c',\n        d7: '\u0413\u043e\u0434\u044b \u043e\u043f\u044b\u0442\u0430 \u0432 NPD \u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438',\n        d8: '\u0415\u0441\u0442\u044c \u043b\u0438 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u043a\u0430\u043c\u0438?',\n        d9: '\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u043e\u0441\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u044b \u043e \u0434\u0435\u0442\u0430\u043b\u044f\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 NPD \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438?',\n        d10: '\u041a\u0430\u043a\u043e\u0432\u0430 \u0432\u0430\u0448\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0440\u043e\u043b\u044c \u0432 NPD?',\n        d3OtherNote: '\u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u00ab\u0414\u0440\u0443\u0433\u043e\u0435\u00bb, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043e\u0442\u0440\u0430\u0441\u043b\u044c:',\n        d10OtherNote: '\u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043e \u00ab\u0414\u0440\u0443\u0433\u043e\u0435\u00bb, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0440\u043e\u043b\u044c:',\n        d3OtherPlaceholder: '\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043e\u0442\u0440\u0430\u0441\u043b\u044c',\n        d10OtherPlaceholder: '\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0440\u043e\u043b\u044c',\n        maxdiff1aTitle: '\u0427\u0430\u0441\u0442\u044c 1 \u2014 \u0412\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c (\u0411\u043b\u043e\u043a 1 \u0438\u0437 3)',\n        maxdiff1bTitle: '\u0427\u0430\u0441\u0442\u044c 1 \u2014 \u0412\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c (\u0411\u043b\u043e\u043a 2 \u0438\u0437 3)',\n        maxdiff1cTitle: '\u0427\u0430\u0441\u0442\u044c 1 \u2014 \u0412\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c\u0430\u044f \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c (\u0411\u043b\u043e\u043a 3 \u0438\u0437 3)',\n        maxdiff2aTitle: '\u0427\u0430\u0441\u0442\u044c 2 \u2014 \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 (\u0411\u043b\u043e\u043a 1 \u0438\u0437 3)',\n        maxdiff2bTitle: '\u0427\u0430\u0441\u0442\u044c 2 \u2014 \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 (\u0411\u043b\u043e\u043a 2 \u0438\u0437 3)',\n        maxdiff2cTitle: '\u0427\u0430\u0441\u0442\u044c 2 \u2014 \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 (\u0411\u043b\u043e\u043a 3 \u0438\u0437 3)',\n        maxdiff1aIntro1: '<strong>\u041e \u0447\u0451\u043c \u0427\u0430\u0441\u0442\u044c 1:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u043c\u044b \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c, \u0447\u0442\u043e<span class=\"maxdiff-sp\"> <\/span><strong>\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438 \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0445\u0430 NPD \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438<\/strong><span class=\"maxdiff-sp\"> <\/span>\u2014 \u043a\u0430\u043a\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b, \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e,<span class=\"maxdiff-sp\"> <\/span><strong>\u0434\u043e\u043b\u0436\u043d\u044b<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438 (\u0432\u0430\u0448\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e<span class=\"maxdiff-sp\"> <\/span><strong>\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u0445<\/strong>,<span class=\"maxdiff-sp\"> <\/span>\u0430 \u043d\u0435 \u00ab\u0447\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u043d\u0435\u0434\u0435\u043b\u0435\u00bb).<br><br><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435<span class=\"maxdiff-sp\"> <\/span><strong>\u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d<\/strong><span class=\"maxdiff-sp\"> <\/span><strong>\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0439<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0438<span class=\"maxdiff-sp\"> <\/span><strong>\u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d<\/strong><span class=\"maxdiff-sp\"> <\/span><strong>\u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0439<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u0441\u043f\u0435\u0445\u0430.',\n        maxdiff1aIntro2: '<strong>\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u0435:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u00ab\u043b\u0443\u0447\u0448\u0438\u0439\u00bb \u0438 \u043e\u0434\u0438\u043d \u00ab\u0445\u0443\u0434\u0448\u0438\u0439\u00bb (\u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u0430), \u0437\u0430\u0442\u0435\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u043e \u044d\u0442\u0438\u043c \u0447\u0435\u0442\u044b\u0440\u0451\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u0430\u043c. \u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u2014 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0430 MaxDiff. \u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u0430\u0445 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b \u0432\u044b \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u043a\u0430\u043a \u0431\u043e\u043b\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0435.',\n        maxdiff1aIntro3: '<strong>\u0417\u0430\u0447\u0435\u043c:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0442\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u043a\u0430\u043a\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u043a\u0430\u043c\u0438 \u0432\u0430\u0448\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u043c\u0438, \u0431\u0435\u0437 \u043e\u0446\u0435\u043d\u043a\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u043f\u043e \u0448\u043a\u0430\u043b\u0435.',\n        maxdiff1bIntro: '<strong>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0432 \u0427\u0430\u0441\u0442\u0438 1 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043f\u043e \u0442\u043e\u043c\u0443, \u0447\u0442\u043e<span class=\"maxdiff-sp\"> <\/span><strong>\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u043c<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0445\u0430 NPD. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 5 \u043d\u0430\u0431\u043e\u0440\u0430\u043c\u0438 MaxDiff. \u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0439 \u0438 \u043e\u0434\u0438\u043d \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442, \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u044c\u0442\u0435 \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441. \u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043e\u043a \u2014 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b MaxDiff.',\n        maxdiff1cIntro: '<strong>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0432 \u0427\u0430\u0441\u0442\u0438 1 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043f\u043e \u0442\u043e\u043c\u0443, \u0447\u0442\u043e<span class=\"maxdiff-sp\"> <\/span><strong>\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u043c<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0445\u0430 NPD. \u042d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u043b\u043e\u043a \u0427\u0430\u0441\u0442\u0438 1. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u0432\u0441\u0435 5 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u043f\u0435\u0440\u0435\u0434 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c. \u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043e\u043a \u2014 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b MaxDiff.',\n        maxdiff2aIntro1: '<strong>\u041e \u0447\u0451\u043c \u0427\u0430\u0441\u0442\u044c 2:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0442\u0435 \u0436\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043e<span class=\"maxdiff-sp\"> <\/span><strong>\u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435<\/strong><span class=\"maxdiff-sp\"> <\/span>\u2014 \u0447\u0442\u043e<span class=\"maxdiff-sp\"> <\/span><strong>\u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u043b\u0438\u044f\u0435\u0442<\/strong><span class=\"maxdiff-sp\"> <\/span>\u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 NPD, \u0430 \u043d\u0435 \u043d\u0430 \u0447\u0442\u043e<span class=\"maxdiff-sp\"> <\/span><strong>\u0434\u043e\u043b\u0436\u043d\u043e<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0431\u044b\u043b\u043e \u0431\u044b \u043e\u043f\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u043e\u0440\u0438\u0438.<br><br><strong>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0444\u0430\u043a\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439<span class=\"maxdiff-sp\"> <\/span><strong>\u0432 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0432\u043b\u0438\u044f\u0435\u0442<\/strong><span class=\"maxdiff-sp\"> <\/span>\u043d\u0430 \u0432\u0430\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b NPD, \u0438 \u0444\u0430\u043a\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043b\u0438\u044f\u0435\u0442<span class=\"maxdiff-sp\"> <\/span><strong>\u0432 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438<\/strong><span class=\"maxdiff-sp\"> <\/span>\u2014 \u0432 \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435.',\n        maxdiff2aIntro2: '<strong>\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u0435:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0442\u0435 \u0436\u0435 \u0448\u0430\u0433\u0438, \u0447\u0442\u043e \u0432 \u0427\u0430\u0441\u0442\u0438 1 (\u043e\u0434\u0438\u043d \u0441\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439, \u043e\u0434\u0438\u043d \u0441\u043b\u0430\u0431\u0435\u0439\u0448\u0438\u0439, \u0437\u0430\u0442\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441), \u043d\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a<span class=\"maxdiff-sp\"> <\/span><strong>\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0432\u043b\u0438\u044f\u043d\u0438\u044e<\/strong>, \u0430 \u043d\u0435 \u043a \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438. \u0418\u043d\u043e\u0433\u0434\u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u2014 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u0438\u0437\u0430\u0439\u043d\u0430 MaxDiff. \u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u0430\u0445 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0444\u0430\u043a\u0442\u043e\u0440\u044b \u0432\u044b \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u043a\u0430\u043a \u0431\u043e\u043b\u0435\u0435 \u0438\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0435.',\n        maxdiff2aIntro3: '<strong>\u0417\u0430\u0447\u0435\u043c:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0427\u0430\u0441\u0442\u0438 1 (\u0447\u0442\u043e \u0432\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0432\u0430\u0436\u043d\u044b\u043c) \u0438 \u0427\u0430\u0441\u0442\u0438 2 (\u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u044b) \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f<span class=\"maxdiff-sp\"> <\/span><strong>\u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043a\u043e\u0432 \u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438<\/strong>.',\n        maxdiff2bIntro: '<strong>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0432 \u0427\u0430\u0441\u0442\u0438 2 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043f\u043e \u0442\u043e\u043c\u0443, \u0447\u0442\u043e<span class=\"maxdiff-sp\"> <\/span><strong>\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043b\u0438\u044f\u0435\u0442<\/strong><span class=\"maxdiff-sp\"> <\/span>\u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u044b NPD \u0432 \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 5 \u043d\u0430\u0431\u043e\u0440\u0430\u043c\u0438 MaxDiff \u043f\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0432\u043b\u0438\u044f\u043d\u0438\u044e. \u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0439, \u043d\u0430\u0438\u0445\u0443\u0434\u0448\u0438\u0439 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430. \u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043e\u043a \u2014 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b MaxDiff.',\n        maxdiff2cIntro: '<strong>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435:<\/strong><span class=\"maxdiff-sp\"> <\/span>\u0432 \u0427\u0430\u0441\u0442\u0438 2 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043f\u043e \u0442\u043e\u043c\u0443, \u0447\u0442\u043e<span class=\"maxdiff-sp\"> <\/span><strong>\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043b\u0438\u044f\u0435\u0442<\/strong><span class=\"maxdiff-sp\"> <\/span>\u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u044b NPD \u0432 \u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435. \u042d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u043b\u043e\u043a \u0427\u0430\u0441\u0442\u0438 2. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u0432\u0441\u0435 5 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u0443. \u041f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043e\u043a \u2014 \u044d\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b MaxDiff.',\n        maxdiffLeftRightReminder: '! <strong>\u041a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439:<\/strong> \u0442\u0435\u043a\u0441\u0442 <strong>\u0444\u0430\u043a\u0442\u043e\u0440\u0430<\/strong> \u2014 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435. \u0412 \u0434\u0432\u0443\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442\u043c\u0435\u0442\u044c\u0442\u0435 <strong>\u043e\u0434\u0438\u043d<\/strong> \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0438 <strong>\u043e\u0434\u0438\u043d<\/strong> \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 (\u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u2014 \u0434\u0432\u0430 <strong>\u0440\u0430\u0437\u043d\u044b\u0445<\/strong> \u0444\u0430\u043a\u0442\u043e\u0440\u0430).',\n        npdTitle: '\u0423\u0441\u043f\u0435\u0448\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 NPD',\n        npdIntro1: '<strong>\u0427\u0442\u043e \u043c\u044b \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c:<\/strong> \u0414\u0443\u043c\u0430\u044f \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 NPD, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 3 \u0433\u043e\u0434\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f\u043c\u0438. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043f\u043e\u043b\u043e\u0441\u043e\u043a, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0443\u044e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 (\u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u0438\u043b\u0438 \u0432 \u0446\u0435\u043b\u043e\u043c).',\n        npdIntro2: '<strong>\u0428\u043a\u0430\u043b\u0430:<\/strong> 1 = \u041d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a \u043d\u0430\u043c, 2 = \u0421\u043a\u043e\u0440\u0435\u0435 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e, 3 = \u0421\u043a\u043e\u0440\u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e, 4 = \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a \u043d\u0430\u043c.',\n        mediatorsTitle: '\u041a\u0430\u043a \u0432\u0430\u0448\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 NPD',\n        mediatorsIntro: '<strong>\u0427\u0442\u043e \u043c\u044b \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c:<\/strong> \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0442\u0443 \u0436\u0435 \u0448\u043a\u0430\u043b\u0443, \u0447\u0442\u043e\u0431\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a \u0432\u0430\u0448\u0435\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438.',\n        thankYouTitle: '\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u043c \u0437\u0430 \u0443\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u043c\u043e\u0451\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438',\n        thankYouP1: '\u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0430\u043d\u043a\u0435\u0442\u044b. \u0412\u0430\u0448\u0438 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043c\u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043c\u0430\u0433\u0438\u0441\u0442\u0435\u0440\u0441\u043a\u043e\u0439 \u0434\u0438\u0441\u0441\u0435\u0440\u0442\u0430\u0446\u0438\u0438.',\n        thankYouP2: '\u041a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0430\u0436\u043d\u044b \u0434\u043b\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0418\u043d\u0434\u0435\u043a\u0441\u0430 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0438\u0441\u043a\u043e\u0432.',\n        thankYouP3: '\u0415\u0449\u0451 \u0440\u0430\u0437 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u043c \u0437\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443.',\n        thankYouP4: '<strong>\u0422\u0438\u043b\u043b \u0411\u043b\u0430\u043d\u0438\u044f<\/strong><br>\u041c\u0430\u0433\u0438\u0441\u0442\u0440\u0430\u043d\u0442, \u041d\u0418\u0423 \u0412\u0428\u042d \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433<br>\u041c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u044b\u0439 \u0431\u0438\u0437\u043d\u0435\u0441 \u043d\u0430 \u0430\u0437\u0438\u0430\u0442\u0441\u043a\u043e-\u0442\u0438\u0445\u043e\u043e\u043a\u0435\u0430\u043d\u0441\u043a\u043e\u043c \u0440\u044b\u043d\u043a\u0435',\n        thankYouContact: '\u041f\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441\u043e \u043c\u043d\u043e\u0439: till.blania@gmail.com',\n        back: '\u2190 \u041d\u0430\u0437\u0430\u0434',\n        next: '\u0414\u0430\u043b\u0435\u0435 \u2192',\n        submit: '\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u2192',\n        sending: '\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430\u2026',\n        sendingWithWait: '\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u0442\u0432\u0435\u0442\u043e\u0432\u2026 \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0434\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438.',\n        submitWaitNote: '\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0434\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u00ab\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u00bb.',\n        mandatory: '\u042d\u0442\u043e\u0442 \u043e\u0442\u0432\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d.',\n        mandatoryList: '\u042d\u0442\u043e\u0442 \u043e\u0442\u0432\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u0435:',\n        setLabel: (n, t) => `\u041d\u0430\u0431\u043e\u0440 ${n} \u0438\u0437 ${t}`,\n        setHelp: '\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438 \u043e\u0434\u0438\u043d \u043d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435.',\n        factor: '\u0424\u0430\u043a\u0442\u043e\u0440',\n        mostImportant: '\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0439',\n        leastImportant: '\u041d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u0439',\n        influencesMost: '\u0412\u043b\u0438\u044f\u0435\u0442 \u0432 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438',\n        influencesLeast: '\u0412\u043b\u0438\u044f\u0435\u0442 \u0432 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438',\n        anchorQuestion: '\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432 \u0432\u044b\u0448\u0435, \u0432\u044b \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u043b\u0438:',\n        anchorImportanceAll: '\u0412\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u0430\u0436\u043d\u044b \u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0445\u0430 \u043d\u0430\u0448\u0435\u0433\u043e NPD',\n        anchorImportanceNone: '\u041d\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u043d\u0435 \u0432\u0430\u0436\u0435\u043d \u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0445\u0430 \u043d\u0430\u0448\u0435\u0433\u043e NPD',\n        anchorImportanceSome: '\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0436\u043d\u044b, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0442',\n        anchorInfluenceAll: '\u0412\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b NPD',\n        anchorInfluenceNone: '\u041d\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b NPD',\n        anchorInfluenceSome: '\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 \u043d\u0430\u0448\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u044b NPD, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0442',\n        scaleShort1: '\u041d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e',\n        scaleShort2: '\u0421\u043a\u043e\u0440\u0435\u0435 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e',\n        scaleShort3: '\u0421\u043a\u043e\u0440\u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e',\n        scaleShort4: '\u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e',\n        selectedPrefix: '\u0412\u044b\u0431\u0440\u0430\u043d\u043e:',\n        submissionFailed: '\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430.',\n        retry: '\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443',\n        stepText: (s, t) => `\u0428\u0430\u0433 ${s} \u0438\u0437 ${t}`,\n        footer: '\u00a9 \u0422\u0438\u043b\u043b \u0411\u043b\u0430\u043d\u0438\u044f, \u043c\u0430\u0440\u0442 2026'\n      },\n      zh: {\n        title: '\u95ee\u5377 \u2014 \u98ce\u9669\u7ba1\u7406\u6587\u5316\u4e0e\u65b0\u4ea7\u54c1\u5f00\u53d1\u7ee9\u6548',\n        welcomeTitle: '\u98ce\u9669\u7ba1\u7406\u6587\u5316\u4e0e\u65b0\u4ea7\u54c1\u5f00\u53d1\u7ee9\u6548',\n        welcomeP1: '<strong>\u6b22\u8fce\u3002<\/strong>\u672c\u95ee\u5377\u662f\u672c\u4eba\u7855\u58eb\u8bba\u6587\u7814\u7a76\u7684\u4e00\u90e8\u5206\u3002\u672c\u7814\u7a76\u63a2\u8ba8\u98ce\u9669\u7ba1\u7406\u6587\u5316\u4e0e\u516c\u53f8\u65b0\u4ea7\u54c1\u5f00\u53d1\u7ee9\u6548\u4e4b\u95f4\u7684\u5173\u7cfb\u3002',\n        welcomeP2: '<strong>\u4ec0\u4e48\u662fNPD\uff1f<\/strong>&nbsp;NPD\u6307<em>\u65b0\u4ea7\u54c1\u5f00\u53d1\uff08New Product Development\uff09<\/em>\uff0c\u5373\u516c\u53f8\u8bbe\u8ba1\u3001\u6d4b\u8bd5\u548c\u63a8\u51fa\u65b0\u4ea7\u54c1\u6216\u670d\u52a1\u7684\u8fc7\u7a0b\u3002',\n        welcomeP3: '<strong>\u4ec0\u4e48\u662f\u98ce\u9669\u8ba4\u77e5\u6307\u6570\uff1f<\/strong>\u8be5\u6307\u6570\u57fa\u4e8e\u60a8\u7684MaxDiff\u548c\u91cf\u8868\u56de\u7b54\uff0c\u53cd\u6620\u4e0e\u98ce\u9669\u76f8\u5173\u56e0\u7d20\u5982\u4f55\u88ab\u611f\u77e5\u4ee5\u53ca\u5728\u5b9e\u9645\u9879\u76ee\u5b9e\u8df5\u4e2d\u7684\u4f53\u73b0\u7a0b\u5ea6\u3002',\n        welcomeP4: '\u6211\u662f<strong>Till Blania<\/strong>\uff0c\u662f<strong>\u5723\u5f7c\u5f97\u5821\u9ad8\u7b49\u7ecf\u6d4e\u5927\u5b66<\/strong>\u7684<strong>\u56fd\u9645\u5e02\u573a\u56fd\u9645\u5546\u52a1<\/strong>\u4e13\u4e1a\u7855\u58eb\u751f\u3002\u672c\u8c03\u67e5\u662f\u6211\u76ee\u524d\u6b63\u5728\u64b0\u5199\u7684\u7855\u58eb\u8bba\u6587\u7684\u4e00\u90e8\u5206\u3002',\n        welcomeP5: '<strong>\u6570\u636e\u6536\u96c6\u8bf4\u660e\uff1a<\/strong>\u6570\u636e\u5c06\u4ee5\u533f\u540d\u65b9\u5f0f\u6536\u96c6\u548c\u5904\u7406\u3002\u672c\u95ee\u5377\u4e0d\u5904\u7406\u6216\u5b58\u50a8\u4efb\u4f55\u4e2a\u4eba\u6570\u636e\u3002',\n        welcomeP6: '\u60a8\u7684\u56de\u7b54\u5c06\u88ab\u533f\u540d\u5316\uff0c\u4ec5\u7528\u4e8e\u5b66\u672f\u76ee\u7684\u3002\u5b8c\u6210\u672c\u8c03\u67e5\u7ea6\u970010\u5206\u949f\u3002',\n        startNow: '\u5f00\u59cb',\n        downloadOverview: '\u4e0b\u8f7d\u7814\u7a76\u6982\u89c8\uff08PDF\uff09',\n        screeningTitle: '\u7b5b\u9009',\n        screeningIntro: '\u8bf7\u56de\u7b54\u4ee5\u4e0b\u95ee\u9898\u4ee5\u786e\u8ba4\u60a8\u662f\u5426\u7b26\u5408\u672c\u7814\u7a76\u7684\u53c2\u4e0e\u8d44\u683c\u3002',\n        screeningQ1: '1. \u8d35\u516c\u53f8\u662f\u5426\u5c06\u65b0\u4ea7\u54c1\u6216\u670d\u52a1\u7684\u5f00\u53d1\u4f5c\u4e3a\u5176\u6838\u5fc3\u4e1a\u52a1\u7684\u4e00\u90e8\u5206\uff1f',\n        screeningQ2: '2. \u8d35\u516c\u53f8\u662f\u5426\u4e3a\u4e2d\u5c0f\u4f01\u4e1a\uff08\u5458\u5de5\u5c11\u4e8e250\u4eba\uff09\uff1f\uff08\u5927\u578b\u4f01\u4e1a\u4e5f\u53ef\u7ee7\u7eed\u586b\u5199\u3002\uff09',\n        screeningQ3: '3. \u8d35\u516c\u53f8\u662f\u5426\u5c5e\u4e8e\u79d1\u6280\u884c\u4e1a\uff1f\uff08\u5982\u8f6f\u4ef6\u3001IT\u3001\u7535\u5b50\u3001\u5de5\u7a0b\u3001\u533b\u7597\u5668\u68b0\uff09',\n        screeningQ4: '4. \u60a8\u662f\u5426\u540c\u610f\u5c06\u60a8\u533f\u540d\u586b\u5199\u7684\u95ee\u5377\u6570\u636e\u7528\u4e8e\u672c\u7855\u58eb\u8bba\u6587\u7814\u7a76\uff1f',\n        yes: '\u662f',\n        no: '\u5426',\n        yesAgree: '\u6211\u540c\u610f',\n        noAgree: '\u6211\u4e0d\u540c\u610f',\n        ineligible: '\u611f\u8c22\u60a8\u7684\u65f6\u95f4\u3002\u5982\u679c\u8d35\u516c\u53f8\u4e0d\u5f00\u5c55\u65b0\u4ea7\u54c1\u5f00\u53d1\u6d3b\u52a8\u6216\u60a8\u672a\u540c\u610f\u53c2\u4e0e\uff0c\u5219\u672c\u8c03\u67e5\u4e0d\u9002\u7528\u3002\u60a8\u53ef\u4ee5\u5173\u95ed\u6b64\u9875\u9762\u3002',\n        demographicsTitle: '\u57fa\u672c\u4fe1\u606f',\n        demographicsIntro: '\u8bf7\u63d0\u4f9b\u6709\u5173\u8d35\u516c\u53f8\u548c\u60a8\u804c\u4f4d\u7684\u57fa\u672c\u4fe1\u606f\u3002\u8fd9\u5c06\u6709\u52a9\u4e8e\u6211\u4eec\u7406\u89e3\u60a8\u56de\u7b54\u7684\u80cc\u666f\u3002',\n        d1: '\u56fd\u5bb6\/\u5730\u533a',\n        d2: '\u516c\u53f8\u89c4\u6a21\uff08\u5458\u5de5\u4eba\u6570\uff09',\n        d2hint: '\uff08\u6b27\u76df\/\u4fc4\u7f57\u65af\u6807\u51c6\uff1a\u5fae\u578b<15\u4eba\uff0c\u5c0f\u578b16\u2013100\u4eba\uff0c\u4e2d\u578b101\u2013250\u4eba\uff0c\u5927\u578b>250\u4eba\uff09',\n        d3: '\u4e3b\u8981\u884c\u4e1a',\n        d4: '\u6210\u7acb\u5e74\u9650',\n        d5: '\u8fc7\u53bb3\u5e74\u5185\u7684\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\u6570\u91cf',\n        d6: '\u804c\u4f4d\u6216\u4e3b\u8981\u804c\u8d23',\n        d7: '\u5728\u4ea7\u54c1\u5f00\u53d1\u6216\u9879\u76ee\u7ba1\u7406\u65b9\u9762\u7684\u5e74\u8d44',\n        d8: '\u8d35\u516c\u53f8\u662f\u5426\u6709\u4e13\u95e8\u7684\u98ce\u9669\u7ba1\u7406\u90e8\u95e8\u6216\u804c\u80fd\uff1f',\n        d9: '\u60a8\u5bf9\u8d35\u516c\u53f8\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\u7ec6\u8282\u7684\u719f\u6089\u7a0b\u5ea6\u5982\u4f55\uff1f',\n        d10: '\u60a8\u5728\u65b0\u4ea7\u54c1\u5f00\u53d1\u4e2d\u7684\u4e3b\u8981\u89d2\u8272\u662f\u4ec0\u4e48\uff1f',\n        d3OtherNote: '\u82e5\u9009\u62e9\u201c\u5176\u4ed6\u201d\uff0c\u8bf7\u586b\u5199\u60a8\u7684\u884c\u4e1a\uff1a',\n        d10OtherNote: '\u82e5\u9009\u62e9\u201c\u5176\u4ed6\u201d\uff0c\u8bf7\u586b\u5199\u60a8\u7684\u89d2\u8272\uff1a',\n        d3OtherPlaceholder: '\u8bf7\u586b\u5199\u60a8\u7684\u884c\u4e1a',\n        d10OtherPlaceholder: '\u8bf7\u586b\u5199\u60a8\u7684\u89d2\u8272',\n        maxdiff1aTitle: '\u7b2c\u4e00\u90e8\u5206 \u2014 \u611f\u77e5\u91cd\u8981\u6027\uff08\u7b2c1\u7ec4\uff0c\u51713\u7ec4\uff09',\n        maxdiff1bTitle: '\u7b2c\u4e00\u90e8\u5206 \u2014 \u611f\u77e5\u91cd\u8981\u6027\uff08\u7b2c2\u7ec4\uff0c\u51713\u7ec4\uff09',\n        maxdiff1cTitle: '\u7b2c\u4e00\u90e8\u5206 \u2014 \u611f\u77e5\u91cd\u8981\u6027\uff08\u7b2c3\u7ec4\uff0c\u51713\u7ec4\uff09',\n        maxdiff2aTitle: '\u7b2c\u4e8c\u90e8\u5206 \u2014 \u5b9e\u9645\u5f71\u54cd\u529b\uff08\u7b2c1\u7ec4\uff0c\u51713\u7ec4\uff09',\n        maxdiff2bTitle: '\u7b2c\u4e8c\u90e8\u5206 \u2014 \u5b9e\u9645\u5f71\u54cd\u529b\uff08\u7b2c2\u7ec4\uff0c\u51713\u7ec4\uff09',\n        maxdiff2cTitle: '\u7b2c\u4e8c\u90e8\u5206 \u2014 \u5b9e\u9645\u5f71\u54cd\u529b\uff08\u7b2c3\u7ec4\uff0c\u51713\u7ec4\uff09',\n        maxdiff1aIntro1: '<strong>\u7b2c\u4e00\u90e8\u5206\u8bf4\u660e\uff1a<\/strong>\u6211\u4eec\u4e86\u89e3\u60a8\u8ba4\u4e3a\u5bf9\u8d35\u516c\u53f8\u65b0\u4ea7\u54c1\u5f00\u53d1\uff08NPD\uff09\u6210\u529f<strong>\u6700\u91cd\u8981\u4e0e\u6700\u4e0d\u91cd\u8981<\/strong>\u7684\u56e0\u7d20\u2014\u2014\u5373\u5728\u5f00\u53d1\u65b0\u4ea7\u54c1\u65f6<strong>\u7406\u5e94<\/strong>\u4fa7\u91cd\u54ea\u4e9b\u65b9\u9762\uff08\u60a8\u7684<strong>\u4f18\u5148\u5e8f<\/strong>\u5224\u65ad\uff0c\u800c\u975e\u4e0a\u5468\u53d1\u751f\u4e86\u4ec0\u4e48\uff09\u3002<br><br><strong>\u60a8\u9700\u8981\u505a\u7684\uff1a<\/strong>\u5728\u6bcf\u4e00\u7ec4\u56db\u4e2a\u56e0\u7d20\u4e2d\uff0c\u5404\u9009<strong>\u4e00\u4e2a<\/strong><strong>\u6700\u91cd\u8981<\/strong>\u4e0e<strong>\u4e00\u4e2a<\/strong><strong>\u6700\u4e0d\u91cd\u8981<\/strong>\u3002',\n        maxdiff1aIntro2: '<strong>\u4efb\u52a1\u600e\u4e48\u586b\uff1a<\/strong>\u6bcf\u4e00\u7ec4\u53ea\u9009<strong>\u4e00\u4e2a<\/strong>\u201c\u6700\u4f73\u201d\u4e0e<strong>\u4e00\u4e2a<\/strong>\u201c\u6700\u5dee\u201d\uff08\u987b\u4e3a\u4e0d\u540c\u6761\u76ee\uff09\uff0c\u7136\u540e\u56de\u7b54\u5173\u4e8e\u8be5\u56db\u4e2a\u56e0\u7d20\u7684\u7b80\u77ed\u540e\u7eed\u95ee\u9898\u3002\u60a8\u6709\u65f6\u4f1a\u770b\u5230\u76f8\u540c\u8868\u8ff0\u518d\u6b21\u51fa\u73b0\uff0c\u8fd9\u662f MaxDiff \u8bbe\u8ba1\u4e2d\u7684\u6b63\u5e38\u90e8\u5206\u3002\u5c06\u540c\u4e00\u56e0\u7d20\u653e\u5165\u4e0d\u540c\u7ec4\u5408\uff0c\u6709\u52a9\u4e8e\u8bc6\u522b\u60a8\u7a33\u5b9a\u504f\u597d\u7684\u56e0\u7d20\u3002',\n        maxdiff1aIntro3: '<strong>\u76ee\u7684\uff1a<\/strong>\u8fd9\u6709\u52a9\u4e8e\u6211\u4eec\u4e86\u89e3\u8d35\u7ec4\u7ec7\u5c06\u54ea\u4e9b\u98ce\u9669\u7ba1\u7406\u9886\u57df\u89c6\u4e3a\u4f18\u5148\uff0c\u800c\u65e0\u9700\u9010\u9879\u6253\u5206\u3002',\n        maxdiff1bIntro: '<strong>\u63d0\u9192\uff1a<\/strong>\u7b2c\u4e00\u90e8\u5206\u8bf7\u6309\u201c\u5bf9 NPD \u6210\u529f<strong>\u5e94\u8be5\u6700\u91cd\u8981<\/strong>\u201d\u6765\u5224\u65ad\u3002\u8bf7\u7ee7\u7eed\u5b8c\u6210\u4e0b\u4e00\u7ec45\u4e2aMaxDiff\u96c6\u5408\u3002\u5728\u6bcf\u4e00\u7ec4\u4e2d\u9009\u62e9\u6070\u597d\u4e00\u4e2a\u6700\u91cd\u8981\u548c\u4e00\u4e2a\u6700\u4e0d\u91cd\u8981\u7684\u9009\u9879\uff0c\u7136\u540e\u56de\u7b54\u951a\u5b9a\u95ee\u9898\u3002\u90e8\u5206\u8868\u8ff0\u91cd\u590d\u51fa\u73b0\u5c5e\u4e8e MaxDiff \u7684\u6b63\u5e38\u8bbe\u8ba1\u3002',\n        maxdiff1cIntro: '<strong>\u63d0\u9192\uff1a<\/strong>\u7b2c\u4e00\u90e8\u5206\u8bf7\u6309\u201c\u5bf9 NPD \u6210\u529f<strong>\u5e94\u8be5\u6700\u91cd\u8981<\/strong>\u201d\u6765\u5224\u65ad\u3002\u8fd9\u662f\u7b2c\u4e00\u90e8\u5206\u7684\u6700\u540e\u4e00\u7ec4\u3002\u8bf7\u5728\u7ee7\u7eed\u4e4b\u524d\u5b8c\u6210\u5168\u90e85\u7ec4\u3002\u90e8\u5206\u8868\u8ff0\u91cd\u590d\u51fa\u73b0\u5c5e\u4e8e MaxDiff \u7684\u6b63\u5e38\u8bbe\u8ba1\u3002',\n        maxdiff2aIntro1: '<strong>\u7b2c\u4e8c\u90e8\u5206\u8bf4\u660e\uff1a<\/strong>\u56e0\u7d20\u76f8\u540c\uff0c\u4f46\u805a\u7126<strong>\u5b9e\u9645\u505a\u6cd5<\/strong>\u2014\u2014\u5728\u8d35\u516c\u53f8NPD\u9879\u76ee\u4e2d\uff0c\u54ea\u4e9b\u56e0\u7d20<strong>\u5b9e\u9645\u5f71\u54cd<\/strong>\u51b3\u7b56\u4e0e\u884c\u4e3a\uff0c\u800c\u4e0d\u662f\u60a8\u8ba4\u4e3a<strong>\u6309\u7406\u8bf4<\/strong>\u5e94\u91cd\u8981\u8005\u3002<br><br><strong>\u60a8\u9700\u8981\u505a\u7684\uff1a<\/strong>\u5728\u6bcf\u4e00\u7ec4\u4e2d\uff0c\u9009\u62e9\u5728<strong>\u65e5\u5e38\u5de5\u4f5c\u4e2d<\/strong>\u5bf9\u8d35\u516c\u53f8NPD\u9879\u76ee\u5f71\u54cd<strong>\u6700\u5927<\/strong>\u4e0e\u5f71\u54cd<strong>\u6700\u5c0f<\/strong>\u7684\u56e0\u7d20\u3002',\n        maxdiff2aIntro2: '<strong>\u4efb\u52a1\u600e\u4e48\u586b\uff1a<\/strong>\u6b65\u9aa4\u4e0e\u7b2c\u4e00\u90e8\u5206\u76f8\u540c\uff08\u5404\u9009\u4e00\u4e2a\u6700\u5f3a\u4e0e\u4e00\u4e2a\u6700\u5f31\uff0c\u7136\u540e\u4f5c\u7b54\u540e\u7eed\u95ee\u9898\uff09\uff0c\u4f46\u5217\u6807\u9898\u5bf9\u5e94\u7684\u662f<strong>\u5b9e\u9645\u5f71\u54cd<\/strong>\uff0c\u800c\u975e\u91cd\u8981\u6027\u3002\u60a8\u6709\u65f6\u4f1a\u770b\u5230\u76f8\u540c\u8868\u8ff0\u518d\u6b21\u51fa\u73b0\uff0c\u8fd9\u662f MaxDiff \u8bbe\u8ba1\u4e2d\u7684\u6b63\u5e38\u90e8\u5206\u3002\u5c06\u540c\u4e00\u56e0\u7d20\u653e\u5165\u4e0d\u540c\u7ec4\u5408\uff0c\u6709\u52a9\u4e8e\u8bc6\u522b\u60a8\u7a33\u5b9a\u504f\u597d\u7684\u56e0\u7d20\u3002',\n        maxdiff2aIntro3: '<strong>\u76ee\u7684\uff1a<\/strong>\u5c06\u7b2c\u4e00\u90e8\u5206\uff08\u60a8\u8ba4\u4e3a\u91cd\u8981\u7684\uff09\u4e0e\u7b2c\u4e8c\u90e8\u5206\uff08\u5b9e\u9645\u9a71\u52a8\u9879\u76ee\u7684\uff09\u8fdb\u884c\u5bf9\u6bd4\uff0c\u7528\u4e8e<strong>\u98ce\u9669\u610f\u8bc6\u4e0e\u4e00\u81f4\u6027<\/strong>\u7814\u7a76\u3002',\n        maxdiff2bIntro: '<strong>\u63d0\u9192\uff1a<\/strong>\u7b2c\u4e8c\u90e8\u5206\u8bf7\u6309\u201c\u5728\u65e5\u5e38\u9879\u76ee\u4e2d<strong>\u5b9e\u9645\u5f71\u54cd<\/strong>\u201d\u6765\u5224\u65ad\u3002\u8bf7\u7ee7\u7eed\u5b8c\u6210\u4e0b\u4e00\u7ec45\u4e2a\u5b9e\u9645\u5f71\u54cd\u529bMaxDiff\u96c6\u5408\u3002\u8bf7\u4e3a\u6bcf\u7ec4\u5b8c\u6210\u6700\u4f73\u3001\u6700\u5dee\u548c\u951a\u5b9a\u95ee\u9898\u7684\u56de\u7b54\u3002\u90e8\u5206\u8868\u8ff0\u91cd\u590d\u51fa\u73b0\u5c5e\u4e8e MaxDiff \u7684\u6b63\u5e38\u8bbe\u8ba1\u3002',\n        maxdiff2cIntro: '<strong>\u63d0\u9192\uff1a<\/strong>\u7b2c\u4e8c\u90e8\u5206\u8bf7\u6309\u201c\u5728\u65e5\u5e38\u9879\u76ee\u4e2d<strong>\u5b9e\u9645\u5f71\u54cd<\/strong>\u201d\u6765\u5224\u65ad\u3002\u8fd9\u662f\u7b2c\u4e8c\u90e8\u5206\u7684\u6700\u540e\u4e00\u7ec4\u3002\u8bf7\u5728\u8fdb\u5165\u4e0b\u4e00\u90e8\u5206\u4e4b\u524d\u5b8c\u6210\u5168\u90e85\u7ec4\u3002\u90e8\u5206\u8868\u8ff0\u91cd\u590d\u51fa\u73b0\u5c5e\u4e8e MaxDiff \u7684\u6b63\u5e38\u8bbe\u8ba1\u3002',\n        maxdiffLeftRightReminder: '\uff01<strong>\u8868\u683c\u7528\u6cd5\uff1a<\/strong>\u7b2c\u4e00\u5217\u4e3a<strong>\u56e0\u7d20<\/strong>\u8868\u8ff0\uff1b\u53f3\u4fa7\u4e24\u5217\u5206\u522b\u70b9\u9009<strong>\u4e00\u4e2a<\/strong>\u76f8\u5bf9\u66f4\u5f3a\u4e0e<strong>\u4e00\u4e2a<\/strong>\u76f8\u5bf9\u66f4\u5f31\u7684\u7b54\u6848\uff08\u6bcf\u7ec4\u987b\u4e3a<strong>\u4e24\u4e2a\u4e0d\u540c<\/strong>\u56e0\u7d20\uff09\u3002',\n        npdTitle: '\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\u6210\u529f\u5ea6',\n        npdIntro1: '<strong>\u6211\u4eec\u9700\u8981\u60a8\u505a\u7684\uff1a<\/strong>\u8bf7\u7ed3\u5408\u8d35\u516c\u53f8\u8fc7\u53bb3\u5e74\u5185\u5b8c\u6210\u7684\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\uff0c\u5bf9\u4ee5\u4e0b\u9648\u8ff0\u8868\u660e\u60a8\u7684\u540c\u610f\u7a0b\u5ea6\u3002\u5bf9\u4e8e\u6bcf\u4e00\u6761\u9648\u8ff0\uff0c\u8bf7\u9009\u62e9\u56db\u4e2a\u9009\u9879\u4e4b\u4e00\uff0c\u8868\u793a\u8be5\u9648\u8ff0\u5bf9\u8d35\u516c\u53f8\u7684\u9002\u7528\u7a0b\u5ea6\uff08\u5e73\u5747\u6216\u603b\u4f53\u800c\u8a00\uff09\u3002',\n        npdIntro2: '<strong>\u91cf\u8868\uff1a<\/strong>1 = \u5b8c\u5168\u4e0d\u9002\u7528\uff0c2 = \u57fa\u672c\u4e0d\u9002\u7528\uff0c3 = \u57fa\u672c\u9002\u7528\uff0c4 = \u5b8c\u5168\u9002\u7528\u3002',\n        mediatorsTitle: '\u8d35\u7ec4\u7ec7\u5982\u4f55\u7ba1\u7406\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee',\n        mediatorsIntro: '<strong>\u6211\u4eec\u9700\u8981\u60a8\u505a\u7684\uff1a<\/strong>\u5bf9\u4e8e\u6bcf\u4e00\u6761\u9648\u8ff0\uff0c\u8bf7\u4f7f\u7528\u76f8\u540c\u7684\u523b\u5ea6\u8868\u660e\u5176\u5bf9\u8d35\u7ec4\u7ec7\u7684\u9002\u7528\u7a0b\u5ea6\u3002',\n        thankYouTitle: '\u611f\u8c22\u60a8\u62bd\u51fa\u65f6\u95f4\u53c2\u4e0e\u672c\u7814\u7a76',\n        thankYouP1: '\u975e\u5e38\u611f\u8c22\u60a8\u5b8c\u6210\u672c\u95ee\u5377\u3002\u60a8\u7684\u56de\u7b54\u5c06\u76f4\u63a5\u5e2e\u52a9\u6211\u5b8c\u6210\u7855\u58eb\u8bba\u6587\u7814\u7a76\u3002',\n        thankYouP2: '\u6bcf\u4e00\u6761\u56de\u7b54\u548c\u6bcf\u4e00\u4e2a\u6570\u636e\u70b9\u5bf9\u672c\u7814\u7a76\u7684\u8d28\u91cf\u4ee5\u53ca\u6700\u7ec8\u7684\u98ce\u9669\u8ba4\u77e5\u6307\u6570\u5206\u6790\u90fd\u81f3\u5173\u91cd\u8981\u3002',\n        thankYouP3: '\u518d\u6b21\u611f\u8c22\u60a8\u7684\u652f\u6301\u3002',\n        thankYouP4: '<strong>Till Blania<\/strong><br>\u7855\u58eb\u751f\uff0c\u5723\u5f7c\u5f97\u5821\u9ad8\u7b49\u7ecf\u6d4e\u5927\u5b66<br>\u4e9a\u592a\u5e02\u573a\u56fd\u9645\u5546\u52a1',\n        thankYouContact: '\u5982\u6709\u95ee\u9898\uff0c\u8bf7\u8054\u7cfb\u6211\uff1atill.blania@gmail.com',\n        back: '\u2190 \u8fd4\u56de',\n        next: '\u4e0b\u4e00\u6b65 \u2192',\n        submit: '\u63d0\u4ea4 \u2192',\n        sending: '\u6b63\u5728\u63d0\u4ea4\u2026',\n        sendingWithWait: '\u6b63\u5728\u63d0\u4ea4\u60a8\u7684\u56de\u7b54\u2026 \u8bf7\u4e0d\u8981\u5173\u95ed\u6b64\u9875\u9762\u5e76\u7b49\u5f85\u63d0\u4ea4\u5b8c\u6210\u3002',\n        submitWaitNote: '\u70b9\u51fb\u63d0\u4ea4\u540e\uff0c\u8bf7\u4e0d\u8981\u5173\u95ed\u6b64\u9875\u9762\u5e76\u7b49\u5f85\u63d0\u4ea4\u5b8c\u6210\u3002',\n        mandatory: '\u6b64\u9879\u4e3a\u5fc5\u586b\u3002',\n        mandatoryList: '\u6b64\u9879\u4e3a\u5fc5\u586b\u3002\u8bf7\u5b8c\u6210\uff1a',\n        setLabel: (n, t) => `\u7b2c ${n} \u7ec4\uff0c\u5171 ${t} \u7ec4`,\n        setHelp: '\u5728\u672c\u7ec4\u4e2d\u9009\u62e9\u6070\u597d\u4e00\u4e2a\u6700\u4f73\u548c\u4e00\u4e2a\u6700\u5dee\u9009\u9879\u3002',\n        factor: '\u56e0\u7d20',\n        mostImportant: '\u6700\u91cd\u8981',\n        leastImportant: '\u6700\u4e0d\u91cd\u8981',\n        influencesMost: '\u5f71\u54cd\u6700\u5927',\n        influencesLeast: '\u5f71\u54cd\u6700\u5c0f',\n        anchorQuestion: '\u5bf9\u4e8e\u4e0a\u8ff0\u56db\u4e2a\u56e0\u7d20\uff0c\u60a8\u8ba4\u4e3a\uff1a',\n        anchorImportanceAll: '\u8fd9\u56db\u4e2a\u56e0\u7d20\u5bf9\u6211\u4eec\u65b0\u4ea7\u54c1\u5f00\u53d1\u7684\u6210\u529f\u90fd\u5f88\u91cd\u8981',\n        anchorImportanceNone: '\u8fd9\u4e9b\u56e0\u7d20\u5bf9\u6211\u4eec\u65b0\u4ea7\u54c1\u5f00\u53d1\u7684\u6210\u529f\u90fd\u4e0d\u91cd\u8981',\n        anchorImportanceSome: '\u6709\u7684\u91cd\u8981\uff0c\u6709\u7684\u4e0d\u91cd\u8981',\n        anchorInfluenceAll: '\u8fd9\u56db\u4e2a\u56e0\u7d20\u90fd\u5b9e\u9645\u5f71\u54cd\u6211\u4eec\u7684\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee',\n        anchorInfluenceNone: '\u8fd9\u4e9b\u56e0\u7d20\u90fd\u4e0d\u5b9e\u9645\u5f71\u54cd\u6211\u4eec\u7684\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee',\n        anchorInfluenceSome: '\u6709\u7684\u5f71\u54cd\u6211\u4eec\u7684\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\uff0c\u6709\u7684\u4e0d\u5f71\u54cd',\n        scaleShort1: '\u4e0d\u9002\u7528',\n        scaleShort2: '\u57fa\u672c\u4e0d\u9002\u7528',\n        scaleShort3: '\u57fa\u672c\u9002\u7528',\n        scaleShort4: '\u5b8c\u5168\u9002\u7528',\n        selectedPrefix: '\u5df2\u9009\uff1a',\n        submissionFailed: '\u63d0\u4ea4\u5931\u8d25\u3002\u8bf7\u68c0\u67e5\u7f51\u7edc\u8fde\u63a5\u540e\u91cd\u8bd5\u3002',\n        retry: '\u91cd\u8bd5',\n        stepText: (s, t) => `\u7b2c ${s} \u6b65\uff0c\u5171 ${t} \u6b65`,\n        footer: '\u00a9 Till Blania\uff0c2026\u5e743\u6708'\n      }\n    };\n\n    const RESEARCH_OVERVIEW_MD = `# Research Overview\n\n**Risk Management Culture and New Product Development Performance in Tech SMEs: A Cross-Cultural Study**\n\n*Master Thesis \u2014 HSE University*\n\n---\n\n## What Is This Study About?\n\nThis study investigates how **risk management culture** \u2014 the shared norms, attitudes, and behaviors toward risk \u2014 influences **new product development (NPD) performance** in technology-focused SMEs. The focus is on culture (how people think about, communicate, and act on risk), not on formal risk management procedures.\n\nThe study compares tech SMEs across **Russia, China, India, and South Korea** to understand whether this relationship differs across national cultural contexts.\n\n## Why Does It Matter?\n\nFour gaps exist in the current literature:\n\n1. **Culture vs. systems.** Most research studies formal ERM frameworks, not the underlying culture. Over-formalizing risk management can even limit innovation (Peljhan & Marc, 2023).\n2. **Limited SME evidence.** Most studies sample large firms or financial institutions. Tech SMEs are underrepresented.\n3. **No cross-cultural comparison.** No study directly compares risk culture and NPD performance across multiple national contexts.\n4. **Unexplored mechanisms.** Most work tests only the direct link, without unpacking *how* risk culture translates into better NPD outcomes.\n\n## What Do We Investigate?\n\n- **H1:** Risk management culture is positively associated with NPD performance.\n- **H2:** This is partially mediated by (a) proactive risk identification, (b) reduction of unplanned rework, and (c) more efficient resource reallocation.\n- **H3:** National culture moderates the strength of this relationship across Russia, China, India, and South Korea.\n\n## How?\n\nAn **online questionnaire (~12\u201315 min)** combining two instruments:\n\n- **Anchored MaxDiff:** respondents evaluate 20 risk factors, selecting the most and least important in each set \u2014 forcing real trade-offs and reducing cross-cultural bias.\n- **4-point Likert scale:** measures NPD performance and the three mediating mechanisms.\n\nA **Risk Awareness Score** compares perceived importance against actual influence of risk factors, revealing how well-calibrated an organization's risk awareness is.\n\n## Who Are We Looking For?\n\nRespondents from **technology-oriented companies** that develop new products or services. The primary focus is on SMEs (<250 employees), but respondents from **larger companies are equally welcome**. We target:\n\n- Company founders & CEOs\n- Product managers & NPD project leaders\n- Innovation managers & R&D team leads\n- Project workers & team members in NPD\n- Engineering leads & technical directors\n- Operations & business development managers\n\nThe key requirement: **first-hand experience with new product development**. Both leadership and hands-on project staff are valuable. Eligible sectors: software, IT services, electronics, engineering, medical devices, and related fields. Respondents can be based in **any country**.\n\n## Expected Results\n\n- A **positive relationship** between risk culture and NPD performance (Salavati et al., 2016; Oziri & Knox, 2025).\n- **Partial mediation** through earlier risk identification, less rework, and better resource reallocation (Teece et al., 1997).\n- **Cross-cultural differences** in which risk culture dimensions matter most (Hofstede, 1983; Meyer, 2014).\n- **Calibration matters** \u2014 aligned risk awareness should predict performance better than simply scoring high on all dimensions (Sitkin & Weingart, 1995).\n\n## How Can You Help?\n\nComplete the questionnaire (~12\u201315 min). Responses are **fully anonymous** and used exclusively for academic purposes. If you know colleagues or contacts in tech product development, please **share this survey** \u2014 every response strengthens the analysis.\n\n**Thank you for your participation!**\n\n---\n\n*For questions, please contact the researcher via the details provided in the questionnaire.*`;\n\n    const MAXDIFF_ITEMS = [\n      {id:\"T1\",text:\"Product development team is strong and well organized (team works well together)\"},\n      {id:\"T2\",text:\"Product matches industry technology trend (fits current technology trends)\"},\n      {id:\"T3\",text:\"Product satisfies intended functions (does what it is supposed to do)\"},\n      {id:\"T4\",text:\"Considers advice of external experts (uses outside expert advice)\"},\n      {id:\"T5\",text:\"Team understands industry technology (team knows the technology well)\"},\n      {id:\"O1\",text:\"Can rapidly respond to NPD plan changes (adapts quickly when plans change)\"},\n      {id:\"O2\",text:\"Cross-functional cooperation (departments work well together)\"},\n      {id:\"O3\",text:\"Minimize uncertainty in total project investment (keeps investment risk under control)\"},\n      {id:\"O4\",text:\"Stable monetary and non-monetary resources (has stable budget and key resources)\"},\n      {id:\"O5\",text:\"Creating transparency regarding NPD risks (risks are openly visible and discussed)\"},\n      {id:\"M1\",text:\"Make commitments to customers (keeps promises to customers)\"},\n      {id:\"M2\",text:\"Effectively communicate product benefits (explains product value clearly)\"},\n      {id:\"M3\",text:\"Understand customers' needs (understands what customers really need)\"},\n      {id:\"M4\",text:\"Well-organized marketing channel (has an effective sales and marketing channel)\"},\n      {id:\"M5\",text:\"Marketing advantages are distinct (has clear marketing advantages)\"},\n      {id:\"C1\",text:\"New products ensure profitability (new products generate profit)\"},\n      {id:\"C2\",text:\"Increase market share (new products grow market share)\"},\n      {id:\"C3\",text:\"Attentive to competitor strategies (tracks competitor moves)\"},\n      {id:\"C4\",text:\"Suitable marketing strategies (uses suitable go-to-market strategies)\"},\n      {id:\"C5\",text:\"Timely product presentation (launches products on time)\"}\n    ];\n\n    const NPD_ITEMS = [\n      {id:\"NPD1\",text:\"The total performance of our NPD process is acceptable.\"},\n      {id:\"NPD2\",text:\"The total product performance of our new products is satisfactory.\"},\n      {id:\"NPD3\",text:\"Our new products enter the market on time.\"},\n      {id:\"NPD4\",text:\"Cost management in our NPD projects is satisfactory.\"},\n      {id:\"NPD5\",text:\"Our new products meet intended performance specifications.\"},\n      {id:\"NPD6\",text:\"Our new products achieve target market share or customer acceptance.\"},\n      {id:\"NPD7\",text:\"We systematically learn from NPD project outcomes.\"}\n    ];\n\n    const MEDIATOR_ITEMS = [\n      {id:\"RI1\",text:\"We systematically identify and assess risks before major NPD decisions.\"},\n      {id:\"R1\",text:\"When problems arise in our NPD projects, they are identified and addressed early rather than late.\"},\n      {id:\"R2\",text:\"Unplanned rework due to late-discovered issues is uncommon in our NPD projects.\"},\n      {id:\"R3\",text:\"Reporting problems and risks in NPD projects is encouraged and not punished.\"},\n      {id:\"RA1\",text:\"When NPD project parameters change, we can reallocate resources (people, budget) quickly and effectively.\"},\n      {id:\"RA2\",text:\"Our organisation adapts project plans and resource allocation when new risks or opportunities emerge.\"},\n      {id:\"RA3\",text:\"Management supports reallocating resources away from underperforming NPD projects when needed.\"}\n    ];\n    let LIKERT_VALUE_LABELS = {\n      \"1\": \"Does not apply to us\",\n      \"2\": \"Rather does not apply\",\n      \"3\": \"Rather applies\",\n      \"4\": \"Fully applies to us\"\n    };\n\n    const MAXDIFF_ITEM_TRANSLATIONS = {\n      T1: { ru: '\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438 \u0441\u0438\u043b\u044c\u043d\u0430 \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u0430 (\u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043b\u0430\u0436\u0435\u043d\u043d\u043e)', zh: '\u4ea7\u54c1\u5f00\u53d1\u56e2\u961f\u5b9e\u529b\u5f3a\u4e14\u7ec4\u7ec7\u6709\u5e8f\uff08\u56e2\u961f\u914d\u5408\u597d\uff09' },\n      T2: { ru: '\u041f\u0440\u043e\u0434\u0443\u043a\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0442\u0440\u0435\u043d\u0434\u0430\u043c \u043e\u0442\u0440\u0430\u0441\u043b\u0438 (\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0442\u0440\u0435\u043d\u0434\u0430\u043c)', zh: '\u4ea7\u54c1\u7b26\u5408\u884c\u4e1a\u6280\u672f\u8d8b\u52bf\uff08\u5951\u5408\u5f53\u524d\u6280\u672f\u8d8b\u52bf\uff09' },\n      T3: { ru: '\u041f\u0440\u043e\u0434\u0443\u043a\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c (\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d)', zh: '\u4ea7\u54c1\u6ee1\u8db3\u9884\u671f\u529f\u80fd\uff08\u8be5\u5b9e\u73b0\u7684\u529f\u80fd\u90fd\u80fd\u5b9e\u73b0\uff09' },\n      T4: { ru: '\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0432\u0435\u0442\u044b \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432)', zh: '\u8003\u8651\u5916\u90e8\u4e13\u5bb6\u7684\u5efa\u8bae\uff08\u4f1a\u91c7\u7eb3\u5916\u90e8\u4e13\u5bb6\u610f\u89c1\uff09' },\n      T5: { ru: '\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u043e\u0442\u0440\u0430\u0441\u043b\u0438 (\u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u0435\u0442 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u043e\u0442\u0440\u0430\u0441\u043b\u0438)', zh: '\u56e2\u961f\u4e86\u89e3\u884c\u4e1a\u6280\u672f\uff08\u56e2\u961f\u61c2\u884c\u4e1a\u6280\u672f\uff09' },\n      O1: { ru: '\u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u043e\u0432 NPD (\u0431\u044b\u0441\u0442\u0440\u043e \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043f\u043b\u0430\u043d\u043e\u0432)', zh: '\u80fd\u591f\u5feb\u901f\u5e94\u5bf9\u65b0\u4ea7\u54c1\u5f00\u53d1\u8ba1\u5212\u7684\u53d8\u5316\uff08\u8ba1\u5212\u53d8\u52a8\u65f6\u80fd\u5feb\u901f\u8c03\u6574\uff09' },\n      O2: { ru: '\u041c\u0435\u0436\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u043e (\u043e\u0442\u0434\u0435\u043b\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442)', zh: '\u8de8\u804c\u80fd\u534f\u4f5c\uff08\u5404\u90e8\u95e8\u534f\u4f5c\u987a\u7545\uff09' },\n      O3: { ru: '\u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 \u043e\u0431\u0449\u0438\u0445 \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u044f\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0440\u0438\u0441\u043a\u0438 \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c)', zh: '\u6700\u5927\u9650\u5ea6\u5730\u51cf\u5c11\u9879\u76ee\u603b\u6295\u8d44\u7684\u4e0d\u786e\u5b9a\u6027\uff08\u63a7\u5236\u6295\u8d44\u98ce\u9669\uff09' },\n      O4: { ru: '\u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u043d\u0435\u0436\u043d\u044b\u0435 \u0438 \u043d\u0435\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b (\u0435\u0441\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0431\u044e\u0434\u0436\u0435\u0442 \u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b)', zh: '\u7a33\u5b9a\u7684\u8d22\u52a1\u4e0e\u975e\u8d22\u52a1\u8d44\u6e90\uff08\u9884\u7b97\u548c\u5173\u952e\u8d44\u6e90\u7a33\u5b9a\uff09' },\n      O5: { ru: '\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u0440\u0438\u0441\u043a\u043e\u0432 NPD (\u0440\u0438\u0441\u043a\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u043e \u0432\u0438\u0434\u043d\u044b \u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f)', zh: '\u521b\u5efa\u5173\u4e8e\u65b0\u4ea7\u54c1\u5f00\u53d1\u98ce\u9669\u7684\u900f\u660e\u5ea6\uff08\u98ce\u9669\u6e05\u6670\u53ef\u89c1\u5e76\u88ab\u8ba8\u8bba\uff09' },\n      M1: { ru: '\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u043f\u0435\u0440\u0435\u0434 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 (\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c)', zh: '\u5411\u5ba2\u6237\u505a\u51fa\u627f\u8bfa\uff08\u5bf9\u5ba2\u6237\u8bf4\u5230\u505a\u5230\uff09' },\n      M2: { ru: '\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 (\u0447\u0451\u0442\u043a\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u0442 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430)', zh: '\u6709\u6548\u4f20\u8fbe\u4ea7\u54c1\u4f18\u52bf\uff08\u6e05\u695a\u8bf4\u660e\u4ea7\u54c1\u4ef7\u503c\uff09' },\n      M3: { ru: '\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 (\u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432)', zh: '\u4e86\u89e3\u5ba2\u6237\u9700\u6c42\uff08\u771f\u6b63\u4e86\u89e3\u5ba2\u6237\u9700\u8981\u4ec0\u4e48\uff09' },\n      M4: { ru: '\u0425\u043e\u0440\u043e\u0448\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u044b\u0439 \u043a\u0430\u043d\u0430\u043b (\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u0430 \u0438 \u043f\u0440\u043e\u0434\u0430\u0436)', zh: '\u7ec4\u7ec7\u826f\u597d\u7684\u8425\u9500\u6e20\u9053\uff08\u8425\u9500\u4e0e\u9500\u552e\u6e20\u9053\u6709\u6548\uff09' },\n      M5: { ru: '\u041c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u044b (\u0438\u043c\u0435\u0435\u0442 \u0447\u0451\u0442\u043a\u0438\u0435 \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430)', zh: '\u8425\u9500\u4f18\u52bf\u660e\u663e\uff08\u5e02\u573a\u4f18\u52bf\u6e05\u6670\uff09' },\n      C1: { ru: '\u041d\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u0431\u044b\u043b\u044c\u043d\u043e\u0441\u0442\u044c (\u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u043f\u0440\u0438\u0431\u044b\u043b\u044c)', zh: '\u65b0\u4ea7\u54c1\u786e\u4fdd\u76c8\u5229\uff08\u65b0\u4ea7\u54c1\u80fd\u5e26\u6765\u5229\u6da6\uff09' },\n      C2: { ru: '\u0423\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0438 \u0440\u044b\u043d\u043a\u0430 (\u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442 \u0434\u043e\u043b\u044e \u0440\u044b\u043d\u043a\u0430)', zh: '\u589e\u52a0\u5e02\u573a\u4efd\u989d\uff08\u65b0\u4ea7\u54c1\u5e26\u6765\u5e02\u573a\u4efd\u989d\u589e\u957f\uff09' },\n      C3: { ru: '\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043a \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f\u043c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432 (\u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043e\u0432)', zh: '\u5173\u6ce8\u7ade\u4e89\u5bf9\u624b\u7b56\u7565\uff08\u6301\u7eed\u5173\u6ce8\u7ade\u4e89\u5bf9\u624b\u52a8\u5411\uff09' },\n      C4: { ru: '\u041f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u044b\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 (\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a)', zh: '\u5408\u9002\u7684\u8425\u9500\u7b56\u7565\uff08\u91c7\u7528\u5408\u9002\u7684\u5e02\u573a\u8fdb\u5165\u7b56\u7565\uff09' },\n      C5: { ru: '\u0421\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 (\u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a \u0432\u043e\u0432\u0440\u0435\u043c\u044f)', zh: '\u53ca\u65f6\u7684\u4ea7\u54c1\u53d1\u5e03\uff08\u4ea7\u54c1\u6309\u65f6\u4e0a\u5e02\uff09' }\n    };\n    const NPD_ITEM_TRANSLATIONS = {\n      NPD1: { ru: '\u041e\u0431\u0449\u0430\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 NPD \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u0430.', zh: '\u6211\u4eec\u7684\u65b0\u4ea7\u54c1\u5f00\u53d1\u6d41\u7a0b\u7684\u603b\u4f53\u7ee9\u6548\u662f\u53ef\u63a5\u53d7\u7684\u3002' },\n      NPD2: { ru: '\u041e\u0431\u0449\u0430\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u0430\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0448\u0435\u0439 \u043d\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0446\u0438\u0438 \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430.', zh: '\u6211\u4eec\u65b0\u4ea7\u54c1\u7684\u603b\u4f53\u4ea7\u54c1\u7ee9\u6548\u4ee4\u4eba\u6ee1\u610f\u3002' },\n      NPD3: { ru: '\u041d\u0430\u0448\u0438 \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a \u0432\u043e\u0432\u0440\u0435\u043c\u044f.', zh: '\u6211\u4eec\u7684\u65b0\u4ea7\u54c1\u6309\u65f6\u4e0a\u5e02\u3002' },\n      NPD4: { ru: '\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438 \u0432 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 NPD \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e.', zh: '\u6211\u4eec\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\u7684\u6210\u672c\u7ba1\u7406\u4ee4\u4eba\u6ee1\u610f\u3002' },\n      NPD5: { ru: '\u041d\u0430\u0448\u0438 \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f\u043c.', zh: '\u6211\u4eec\u7684\u65b0\u4ea7\u54c1\u8fbe\u5230\u9884\u671f\u6027\u80fd\u89c4\u683c\u3002' },\n      NPD6: { ru: '\u041d\u0430\u0448\u0438 \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0442 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0434\u043e\u043b\u0438 \u0440\u044b\u043d\u043a\u0430 \u0438\u043b\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u043d\u0438\u044f.', zh: '\u6211\u4eec\u7684\u65b0\u4ea7\u54c1\u8fbe\u5230\u76ee\u6807\u5e02\u573a\u4efd\u989d\u6216\u5ba2\u6237\u8ba4\u53ef\u5ea6\u3002' },\n      NPD7: { ru: '\u041c\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 NPD.', zh: '\u6211\u4eec\u7cfb\u7edf\u5730\u4ece\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\u6210\u679c\u4e2d\u5b66\u4e60\u3002' }\n    };\n    const MEDIATOR_ITEM_TRANSLATIONS = {\n      RI1: { ru: '\u041c\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u044f\u0432\u043b\u044f\u0435\u043c \u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u043c \u0440\u0438\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0434 \u043a\u0440\u0443\u043f\u043d\u044b\u043c\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e NPD.', zh: '\u6211\u4eec\u5728\u505a\u51fa\u91cd\u5927\u65b0\u4ea7\u54c1\u5f00\u53d1\u51b3\u7b56\u524d\u7cfb\u7edf\u5730\u8bc6\u522b\u548c\u8bc4\u4f30\u98ce\u9669\u3002' },\n      R1: { ru: '\u041a\u043e\u0433\u0434\u0430 \u0432 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 NPD \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043e\u043d\u0438 \u0432\u044b\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438 \u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u043d\u043e, \u0430 \u043d\u0435 \u043f\u043e\u0437\u0434\u043d\u043e.', zh: '\u5f53\u6211\u4eec\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\u4e2d\u51fa\u73b0\u95ee\u9898\u65f6\uff0c\u6211\u4eec\u4f1a\u53ca\u65e9\u53d1\u73b0\u5e76\u5904\u7406\uff0c\u800c\u975e\u62d6\u5ef6\u3002' },\n      R2: { ru: '\u041d\u0435\u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043a\u0438 \u0438\u0437-\u0437\u0430 \u043f\u043e\u0437\u0434\u043d\u0435\u0433\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435\u0447\u0430\u0441\u0442\u044b \u0432 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 NPD.', zh: '\u56e0\u95ee\u9898\u53d1\u73b0\u8f83\u665a\u800c\u5bfc\u81f4\u7684\u8ba1\u5212\u5916\u8fd4\u5de5\u5728\u6211\u4eec\u7684\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\u4e2d\u5e76\u4e0d\u5e38\u89c1\u3002' },\n      R3: { ru: '\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0438 \u0440\u0438\u0441\u043a\u0430\u0445 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 NPD \u043f\u043e\u043e\u0449\u0440\u044f\u0435\u0442\u0441\u044f \u0438 \u043d\u0435 \u043d\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f.', zh: '\u9f13\u52b1\u5e76\u62a5\u544a\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\u4e2d\u7684\u95ee\u9898\u548c\u98ce\u9669\uff0c\u4e0d\u4f1a\u56e0\u6b64\u53d7\u5230\u60e9\u7f5a\u3002' },\n      RA1: { ru: '\u041a\u043e\u0433\u0434\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 NPD \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b (\u043b\u044e\u0434\u0438, \u0431\u044e\u0434\u0436\u0435\u0442).', zh: '\u5f53\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\u53c2\u6570\u53d8\u5316\u65f6\uff0c\u6211\u4eec\u80fd\u591f\u5feb\u901f\u6709\u6548\u5730\u91cd\u65b0\u8c03\u914d\u8d44\u6e90\uff08\u4eba\u5458\u3001\u9884\u7b97\uff09\u3002' },\n      RA2: { ru: '\u041d\u0430\u0448\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u043b\u0430\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u043d\u043e\u0432\u044b\u0445 \u0440\u0438\u0441\u043a\u043e\u0432 \u0438\u043b\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439.', zh: '\u5f53\u51fa\u73b0\u65b0\u98ce\u9669\u6216\u65b0\u673a\u4f1a\u65f6\uff0c\u6211\u4eec\u7ec4\u7ec7\u4f1a\u8c03\u6574\u9879\u76ee\u8ba1\u5212\u548c\u8d44\u6e90\u5206\u914d\u3002' },\n      RA3: { ru: '\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043e\u0442 \u0441\u043b\u0430\u0431\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 NPD \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.', zh: '\u5fc5\u8981\u65f6\uff0c\u7ba1\u7406\u5c42\u652f\u6301\u5c06\u8d44\u6e90\u4ece\u8868\u73b0\u4e0d\u4f73\u7684\u65b0\u4ea7\u54c1\u5f00\u53d1\u9879\u76ee\u4e2d\u91cd\u65b0\u5206\u914d\u3002' }\n    };\n\n    function itemText(id, fallback, dict) {\n      if (currentLang === 'en') return fallback;\n      return dict[id]?.[currentLang] || fallback;\n    }\n\n    function setLabelTextForInput(input, text) {\n      if (!input || !input.parentElement) return;\n      const label = input.parentElement;\n      const toRemove = [];\n      label.childNodes.forEach(node => { if (node.nodeType === Node.TEXT_NODE) toRemove.push(node); });\n      toRemove.forEach(node => label.removeChild(node));\n      label.appendChild(document.createTextNode(' ' + text));\n    }\n\n    function setRadioLabel(name, value, text) {\n      const input = document.querySelector(`input[name=\"${name}\"][value=\"${value}\"]`);\n      setLabelTextForInput(input, text);\n    }\n\n    function splitSimpleAndMainText(raw) {\n      const text = String(raw || '').trim();\n      const match = text.match(\/^(.*)\\(([^()]+)\\)\\s*$\/);\n      if (!match) return { simple: '', main: text };\n      return { main: match[1].trim(), simple: match[2].trim() };\n    }\n\n    function setMaxDiffFactorCellText(cell, raw) {\n      if (!cell) return;\n      const parts = splitSimpleAndMainText(raw);\n      cell.innerHTML = '';\n      if (parts.simple) {\n        const simple = document.createElement('span');\n        simple.className = 'maxdiff-factor-simple';\n        simple.textContent = parts.simple;\n        const main = document.createElement('span');\n        main.className = 'maxdiff-factor-main';\n        main.textContent = parts.main;\n        cell.appendChild(simple);\n        cell.appendChild(main);\n        return;\n      }\n      cell.textContent = parts.main;\n    }\n\n    function applyLanguage(lang) {\n      currentLang = I18N[lang] ? lang : 'en';\n      const t = I18N[currentLang];\n      document.title = t.title;\n      const welcome = document.querySelector('#welcome .welcome-screen');\n      if (welcome) {\n        const title = welcome.querySelector('h1');\n        if (title) title.textContent = t.welcomeTitle;\n        const p = welcome.querySelectorAll('p');\n        if (p[0]) p[0].innerHTML = t.welcomeP1;\n        if (p[1]) p[1].innerHTML = t.welcomeP2;\n        if (p[2]) p[2].innerHTML = t.welcomeP3;\n        if (p[3]) p[3].innerHTML = t.welcomeP4;\n        if (p[4]) p[4].innerHTML = t.welcomeP5;\n        if (p[5]) p[5].innerHTML = t.welcomeP6;\n      }\n      document.getElementById('btnStart').textContent = t.startNow;\n      const btnDownloadOverview = document.getElementById('btnDownloadOverview');\n      if (btnDownloadOverview) btnDownloadOverview.textContent = t.downloadOverview;\n      const screening = document.getElementById('screening');\n      if (screening) {\n        screening.querySelector('h2').textContent = t.screeningTitle;\n        screening.querySelector('.intro-box p').textContent = t.screeningIntro;\n        screening.querySelector('#q-screening-s1 p').innerHTML = `<strong>${t.screeningQ1}<\/strong> <span class=\"required\">*<\/span>`;\n        screening.querySelector('#q-screening-s2 p').innerHTML = `<strong>${t.screeningQ2}<\/strong> <span class=\"required\">*<\/span>`;\n        screening.querySelector('#q-screening-s3 p').innerHTML = `<strong>${t.screeningQ3}<\/strong> <span class=\"required\">*<\/span>`;\n        screening.querySelector('#q-screening-s4 p').innerHTML = `<strong>${t.screeningQ4}<\/strong> <span class=\"required\">*<\/span>`;\n      }\n      setRadioLabel('s1', 'yes', t.yes); setRadioLabel('s1', 'no', t.no);\n      setRadioLabel('s2', 'yes', t.yes); setRadioLabel('s2', 'no', t.no);\n      setRadioLabel('s3', 'yes', t.yes); setRadioLabel('s3', 'no', t.no);\n      setRadioLabel('s4', 'yes', t.yesAgree); setRadioLabel('s4', 'no', t.noAgree);\n      const ineligible = document.getElementById('screening-ineligible');\n      if (ineligible) ineligible.textContent = t.ineligible;\n\n      const d = document.getElementById('demographics');\n      if (d) {\n        d.querySelector('h2').textContent = t.demographicsTitle;\n        d.querySelector('.intro-box p').textContent = t.demographicsIntro;\n        d.querySelector('#q-demographics-d1 p').innerHTML = `<strong>${t.d1}<\/strong> <span class=\"required\">*<\/span>`;\n        d.querySelector('#q-demographics-d2 p').innerHTML = `<strong>${t.d2}<\/strong> <span class=\"required\">*<\/span>`;\n        d.querySelector('#q-demographics-d2 p[style]').textContent = t.d2hint;\n        d.querySelector('#q-demographics-d3 p').innerHTML = `<strong>${t.d3}<\/strong> <span class=\"required\">*<\/span>`;\n        d.querySelector('#q-demographics-d4 p').innerHTML = `<strong>${t.d4}<\/strong> <span class=\"required\">*<\/span>`;\n        d.querySelector('#q-demographics-d5 p').innerHTML = `<strong>${t.d5}<\/strong> <span class=\"required\">*<\/span>`;\n        d.querySelector('#q-demographics-d6 p').innerHTML = `<strong>${t.d6}<\/strong> <span class=\"required\">*<\/span>`;\n        d.querySelector('#q-demographics-d7 p').innerHTML = `<strong>${t.d7}<\/strong> <span class=\"required\">*<\/span>`;\n        d.querySelector('#q-demographics-d8 p').innerHTML = `<strong>${t.d8}<\/strong> <span class=\"required\">*<\/span>`;\n        d.querySelector('#q-demographics-d9 p').innerHTML = `<strong>${t.d9}<\/strong> <span class=\"required\">*<\/span>`;\n        d.querySelector('#q-demographics-d10 p').innerHTML = `<strong>${t.d10}<\/strong> <span class=\"required\">*<\/span>`;\n      }\n\n      const d1 = document.getElementById('d1');\n      if (d1) {\n        const map = {\n          en: { empty: '\u2014 Select \u2014', Russia: 'Russia', China: 'China', India: 'India', Pakistan: 'Pakistan', 'South Korea': 'South Korea' },\n          ru: { empty: '\u2014 \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u2014', Russia: '\u0420\u043e\u0441\u0441\u0438\u044f', China: '\u041a\u0438\u0442\u0430\u0439', India: '\u0418\u043d\u0434\u0438\u044f', Pakistan: '\u041f\u0430\u043a\u0438\u0441\u0442\u0430\u043d', 'South Korea': '\u042e\u0436\u043d\u0430\u044f \u041a\u043e\u0440\u0435\u044f' },\n          zh: { empty: '\u2014 \u8bf7\u9009\u62e9 \u2014', Russia: '\u4fc4\u7f57\u65af', China: '\u4e2d\u56fd', India: '\u5370\u5ea6', Pakistan: '\u5df4\u57fa\u65af\u5766', 'South Korea': '\u97e9\u56fd' }\n        }[currentLang];\n        d1.options[0].text = map.empty;\n        Array.from(d1.options).forEach(opt => {\n          if (map[opt.value]) opt.text = map[opt.value];\n        });\n      }\n      const d4 = document.getElementById('d4');\n      const d6 = document.getElementById('d6');\n      const d7 = document.getElementById('d7');\n      const d3Other = document.getElementById('d3_other');\n      const d10Other = document.getElementById('d10_other');\n      const d3OtherNote = document.getElementById('d3-other-note');\n      const d10OtherNote = document.getElementById('d10-other-note');\n      if (d4) d4.placeholder = currentLang === 'ru' ? '\u043d\u0430\u043f\u0440. 5' : currentLang === 'zh' ? '\u4f8b\u5982\uff1a5' : 'e.g. 5';\n      if (d6) d6.placeholder = currentLang === 'ru' ? '\u043d\u0430\u043f\u0440. \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430' : currentLang === 'zh' ? '\u4f8b\u5982\uff1a\u9879\u76ee\u7ecf\u7406' : 'e.g. Project Manager';\n      if (d7) d7.placeholder = currentLang === 'ru' ? '\u043d\u0430\u043f\u0440. 3' : currentLang === 'zh' ? '\u4f8b\u5982\uff1a3' : 'e.g. 3';\n      if (d3Other) d3Other.placeholder = t.d3OtherPlaceholder;\n      if (d10Other) d10Other.placeholder = t.d10OtherPlaceholder;\n      if (d3OtherNote) d3OtherNote.textContent = t.d3OtherNote;\n      if (d10OtherNote) d10OtherNote.textContent = t.d10OtherNote;\n\n      setRadioLabel('d2', '1-15', currentLang === 'ru' ? '1\u201315 (\u041c\u0438\u043a\u0440\u043e)' : currentLang === 'zh' ? '1\u201315\u4eba\uff08\u5fae\u578b\uff09' : '1\u201315 (Micro)');\n      setRadioLabel('d2', '16-100', currentLang === 'ru' ? '16\u2013100 (\u041c\u0430\u043b\u043e\u0435)' : currentLang === 'zh' ? '16\u2013100\u4eba\uff08\u5c0f\u578b\uff09' : '16\u2013100 (Small)');\n      setRadioLabel('d2', '101-250', currentLang === 'ru' ? '101\u2013250 (\u0421\u0440\u0435\u0434\u043d\u0435\u0435)' : currentLang === 'zh' ? '101\u2013250\u4eba\uff08\u4e2d\u578b\uff09' : '101\u2013250 (Medium)');\n      setRadioLabel('d2', '251+', currentLang === 'ru' ? '\u0411\u043e\u043b\u0435\u0435 250 (\u041a\u0440\u0443\u043f\u043d\u043e\u0435)' : currentLang === 'zh' ? '250\u4eba\u4ee5\u4e0a\uff08\u5927\u578b\uff09' : 'Above 250 (Large)');\n      setRadioLabel('d3', 'Software', currentLang === 'ru' ? '\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435' : currentLang === 'zh' ? '\u8f6f\u4ef6' : 'Software');\n      setRadioLabel('d3', 'IT', currentLang === 'ru' ? 'IT-\u0443\u0441\u043b\u0443\u0433\u0438' : currentLang === 'zh' ? 'IT\u670d\u52a1' : 'IT services');\n      setRadioLabel('d3', 'Electronics', currentLang === 'ru' ? '\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430' : currentLang === 'zh' ? '\u7535\u5b50' : 'Electronics');\n      setRadioLabel('d3', 'Engineering', currentLang === 'ru' ? '\u0418\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u044f' : currentLang === 'zh' ? '\u5de5\u7a0b' : 'Engineering');\n      setRadioLabel('d3', 'Medical', currentLang === 'ru' ? '\u041c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0435 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0435' : currentLang === 'zh' ? '\u533b\u7597\u5668\u68b0' : 'Medical devices');\n      setRadioLabel('d3', 'Financial', currentLang === 'ru' ? '\u0424\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0439 \u0441\u0435\u043a\u0442\u043e\u0440' : currentLang === 'zh' ? '\u91d1\u878d\u884c\u4e1a' : 'Financial sector');\n      setRadioLabel('d3', 'SocialMedia', currentLang === 'ru' ? '\u0421\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0438 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438' : currentLang === 'zh' ? '\u793e\u4ea4\u5a92\u4f53\u4e0e\u4f20\u64ad' : 'Social Media & Communication');\n      setRadioLabel('d3', 'Other', currentLang === 'ru' ? '\u0414\u0440\u0443\u0433\u043e\u0435' : currentLang === 'zh' ? '\u5176\u4ed6' : 'Other');\n      setRadioLabel('d5', '0-2', currentLang === 'zh' ? '0\u20132\u4e2a' : currentLang === 'ru' ? '0\u20132' : '0\u20132');\n      setRadioLabel('d5', '3-5', currentLang === 'zh' ? '3\u20135\u4e2a' : currentLang === 'ru' ? '3\u20135' : '3\u20135');\n      setRadioLabel('d5', '6-10', currentLang === 'zh' ? '6\u201310\u4e2a' : currentLang === 'ru' ? '6\u201310' : '6\u201310');\n      setRadioLabel('d5', '11+', currentLang === 'ru' ? '11 \u0438 \u0431\u043e\u043b\u0435\u0435' : currentLang === 'zh' ? '11\u4e2a\u53ca\u4ee5\u4e0a' : '11 or more');\n      setRadioLabel('d8', 'Yes', t.yes); setRadioLabel('d8', 'No', t.no);\n      setRadioLabel('d9', 'Not familiar', currentLang === 'ru' ? '\u041d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\/\u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0430' : currentLang === 'zh' ? '\u4e0d\u719f\u6089' : 'Not familiar');\n      setRadioLabel('d9', 'Somewhat familiar', currentLang === 'ru' ? '\u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0437\u043d\u0430\u043a\u043e\u043c\/\u0437\u043d\u0430\u043a\u043e\u043c\u0430' : currentLang === 'zh' ? '\u7565\u6709\u4e86\u89e3' : 'Somewhat familiar');\n      setRadioLabel('d9', 'Familiar', currentLang === 'ru' ? '\u0417\u043d\u0430\u043a\u043e\u043c\/\u0437\u043d\u0430\u043a\u043e\u043c\u0430' : currentLang === 'zh' ? '\u719f\u6089' : 'Familiar');\n      setRadioLabel('d9', 'Very familiar', currentLang === 'ru' ? '\u041e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c\/\u0437\u043d\u0430\u043a\u043e\u043c\u0430' : currentLang === 'zh' ? '\u975e\u5e38\u719f\u6089' : 'Very familiar');\n      setRadioLabel('d9', 'Extremely familiar', currentLang === 'ru' ? '\u0412 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\/\u0437\u043d\u0430\u043a\u043e\u043c\u0430' : currentLang === 'zh' ? '\u6781\u4e3a\u719f\u6089' : 'Extremely familiar');\n      setRadioLabel('d10', 'Project Manager', currentLang === 'ru' ? '\u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0440\u043e\u0435\u043a\u0442\u0430' : currentLang === 'zh' ? '\u9879\u76ee\u7ecf\u7406' : 'Project Manager');\n      setRadioLabel('d10', 'Team Member', currentLang === 'ru' ? '\u0427\u043b\u0435\u043d \u043a\u043e\u043c\u0430\u043d\u0434\u044b' : currentLang === 'zh' ? '\u56e2\u961f\u6210\u5458' : 'Team Member');\n      setRadioLabel('d10', 'Senior Executive', currentLang === 'ru' ? '\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u0432\u044b\u0441\u0448\u0435\u0433\u043e \u0437\u0432\u0435\u043d\u0430' : currentLang === 'zh' ? '\u9ad8\u5c42\u7ba1\u7406\u8005' : 'Senior Executive');\n      setRadioLabel('d10', 'Marketing\/Sales', currentLang === 'ru' ? '\u041c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\/\u041f\u0440\u043e\u0434\u0430\u0436\u0438' : currentLang === 'zh' ? '\u5e02\u573a\u8425\u9500\/\u9500\u552e' : 'Marketing\/Sales');\n      setRadioLabel('d10', 'R&D\/Engineering', currentLang === 'ru' ? 'R&D\/\u0418\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u044f' : currentLang === 'zh' ? '\u7814\u53d1\/\u5de5\u7a0b' : 'R&D\/Engineering');\n      setRadioLabel('d10', 'Other', currentLang === 'ru' ? '\u0414\u0440\u0443\u0433\u043e\u0435' : currentLang === 'zh' ? '\u5176\u4ed6' : 'Other');\n      toggleConditionalOtherInputs();\n\n      document.querySelector('#maxdiff1a h2').textContent = t.maxdiff1aTitle;\n      document.querySelector('#maxdiff1b h2').textContent = t.maxdiff1bTitle;\n      document.querySelector('#maxdiff1c h2').textContent = t.maxdiff1cTitle;\n      document.querySelector('#maxdiff2a h2').textContent = t.maxdiff2aTitle;\n      document.querySelector('#maxdiff2b h2').textContent = t.maxdiff2bTitle;\n      document.querySelector('#maxdiff2c h2').textContent = t.maxdiff2cTitle;\n      ['maxdiff1a', 'maxdiff1b', 'maxdiff1c', 'maxdiff2a', 'maxdiff2b', 'maxdiff2c'].forEach(id => {\n        const rem = document.querySelector('#' + id + ' .maxdiff-left-right-reminder');\n        if (rem) rem.innerHTML = t.maxdiffLeftRightReminder;\n      });\n      const p1a = document.querySelectorAll('#maxdiff1a .maxdiff-intro');\n      if (p1a[0]) p1a[0].innerHTML = t.maxdiff1aIntro1;\n      if (p1a[1]) p1a[1].innerHTML = t.maxdiff1aIntro2;\n      if (p1a[2]) p1a[2].innerHTML = t.maxdiff1aIntro3;\n      const p1b = document.querySelector('#maxdiff1b .maxdiff-intro');\n      if (p1b) p1b.innerHTML = t.maxdiff1bIntro;\n      const p1c = document.querySelector('#maxdiff1c .maxdiff-intro');\n      if (p1c) p1c.innerHTML = t.maxdiff1cIntro;\n      const p2a = document.querySelectorAll('#maxdiff2a .maxdiff-intro');\n      if (p2a[0]) p2a[0].innerHTML = t.maxdiff2aIntro1;\n      if (p2a[1]) p2a[1].innerHTML = t.maxdiff2aIntro2;\n      if (p2a[2]) p2a[2].innerHTML = t.maxdiff2aIntro3;\n      const p2b = document.querySelector('#maxdiff2b .maxdiff-intro');\n      if (p2b) p2b.innerHTML = t.maxdiff2bIntro;\n      const p2c = document.querySelector('#maxdiff2c .maxdiff-intro');\n      if (p2c) p2c.innerHTML = t.maxdiff2cIntro;\n\n      document.querySelector('#likert-npd h2').textContent = t.npdTitle;\n      const npdIntro = document.querySelectorAll('#likert-npd .intro-box p');\n      npdIntro[0].innerHTML = t.npdIntro1; npdIntro[1].innerHTML = t.npdIntro2;\n      document.querySelector('#likert-mediators h2').textContent = t.mediatorsTitle;\n      document.querySelector('#likert-mediators .intro-box p').innerHTML = t.mediatorsIntro;\n\n      const ty = document.querySelector('#thankyou .thank-you-screen');\n      if (ty) {\n        ty.querySelector('h2').textContent = t.thankYouTitle;\n        const p = ty.querySelectorAll('p');\n        if (p[0]) p[0].textContent = t.thankYouP1;\n        if (p[1]) p[1].textContent = t.thankYouP2;\n        if (p[2]) p[2].textContent = t.thankYouP3;\n        if (p[3]) p[3].innerHTML = t.thankYouP4;\n        if (p[4]) p[4].textContent = t.thankYouContact;\n      }\n\n      document.querySelectorAll('.error-msg').forEach(el => { el.textContent = t.mandatory; });\n      document.querySelectorAll('.btn-nav.back').forEach(btn => { btn.textContent = t.back; });\n      document.querySelectorAll('.btn-nav:not(.back)').forEach(btn => {\n        if (btn.id === 'btnSubmit') btn.textContent = t.submit;\n        else if (btn.textContent.includes('Sending')) btn.textContent = t.sending;\n        else btn.textContent = t.next;\n      });\n      const submitWaitNote = document.getElementById('submitWaitNote');\n      if (submitWaitNote) submitWaitNote.textContent = t.submitWaitNote;\n      const footer = document.querySelector('.site-footer-inner span');\n      if (footer) footer.textContent = t.footer;\n      document.querySelectorAll('.lang-btn').forEach(btn => {\n        btn.classList.toggle('active', btn.dataset.lang === currentLang);\n      });\n\n      LIKERT_VALUE_LABELS = {\n        \"1\": currentLang === 'ru' ? '\u041d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a \u043d\u0430\u043c' : currentLang === 'zh' ? '\u5b8c\u5168\u4e0d\u9002\u7528' : 'Does not apply to us',\n        \"2\": currentLang === 'ru' ? '\u0421\u043a\u043e\u0440\u0435\u0435 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e' : currentLang === 'zh' ? '\u57fa\u672c\u4e0d\u9002\u7528' : 'Rather does not apply',\n        \"3\": currentLang === 'ru' ? '\u0421\u043a\u043e\u0440\u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e' : currentLang === 'zh' ? '\u57fa\u672c\u9002\u7528' : 'Rather applies',\n        \"4\": currentLang === 'ru' ? '\u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a \u043d\u0430\u043c' : currentLang === 'zh' ? '\u5b8c\u5168\u9002\u7528' : 'Fully applies to us'\n      };\n      relabelDynamicTexts();\n      updateProgress(SECTIONS[currentSectionIndex]);\n    }\n\n    function relabelDynamicTexts() {\n      const t = I18N[currentLang];\n      document.querySelectorAll('.maxdiff-set').forEach(setDiv => {\n        const idx = Number(setDiv.dataset.setIndex || 0) + 1;\n        const h = setDiv.querySelector('h3');\n        if (h) h.textContent = t.setLabel(idx, MAXDIFF_SET_COUNT);\n        const help = setDiv.querySelector('.set-help');\n        if (help) help.textContent = t.setHelp;\n        const tableHeaders = setDiv.querySelectorAll('thead th');\n        const isInfluence = (setDiv.id || '').startsWith('influence-');\n        if (tableHeaders[0]) tableHeaders[0].textContent = t.factor;\n        if (tableHeaders[1]) tableHeaders[1].textContent = isInfluence ? t.influencesMost : t.mostImportant;\n        if (tableHeaders[2]) tableHeaders[2].textContent = isInfluence ? t.influencesLeast : t.leastImportant;\n        setDiv.querySelectorAll('tbody tr').forEach(tr => {\n          const cell = tr.children[0];\n          const marker = tr.querySelector('.maxdiff-cell');\n          const id = marker?.dataset?.itemId;\n          if (cell && id) {\n            const fallback = MAXDIFF_ITEMS.find(i => i.id === id)?.text || cell.textContent;\n            setMaxDiffFactorCellText(cell, itemText(id, fallback, MAXDIFF_ITEM_TRANSLATIONS));\n          }\n        });\n        const anchorTitle = setDiv.querySelector('.anchor-options p');\n        if (anchorTitle) anchorTitle.innerHTML = `<strong>${t.anchorQuestion}<\/strong>`;\n        setDiv.querySelectorAll('.anchor-option').forEach(opt => {\n          const input = opt.querySelector('input');\n          const map = {\n            all: isInfluence ? t.anchorInfluenceAll : t.anchorImportanceAll,\n            none: isInfluence ? t.anchorInfluenceNone : t.anchorImportanceNone,\n            some: isInfluence ? t.anchorInfluenceSome : t.anchorImportanceSome\n          };\n          setLabelTextForInput(input, map[input.value] || '');\n        });\n      });\n\n      NPD_ITEMS.forEach((it, idx) => {\n        const p = document.querySelector(`#q-npd-${it.id} p`);\n        if (p) p.innerHTML = `<strong>${idx + 1}.<\/strong> ${itemText(it.id, it.text, NPD_ITEM_TRANSLATIONS)}`;\n      });\n      MEDIATOR_ITEMS.forEach((it, idx) => {\n        const p = document.querySelector(`#q-mediators-${it.id} p`);\n        if (p) p.innerHTML = `<strong>${idx + 1}.<\/strong> ${itemText(it.id, it.text, MEDIATOR_ITEM_TRANSLATIONS)}`;\n      });\n      document.querySelectorAll('.likert-scale-label.pos-1').forEach(el => { el.innerHTML = `<span class=\"num\">1<\/span>${I18N[currentLang].scaleShort1}`; });\n      document.querySelectorAll('.likert-scale-label.pos-2').forEach(el => { el.innerHTML = `<span class=\"num\">2<\/span>${I18N[currentLang].scaleShort2}`; });\n      document.querySelectorAll('.likert-scale-label.pos-3').forEach(el => { el.innerHTML = `<span class=\"num\">3<\/span>${I18N[currentLang].scaleShort3}`; });\n      document.querySelectorAll('.likert-scale-label.pos-4').forEach(el => { el.innerHTML = `<span class=\"num\">4<\/span>${I18N[currentLang].scaleShort4}`; });\n      document.querySelectorAll('.likert-current').forEach(el => {\n        const id = el.id.replace('slider_text_', '');\n        const slider = document.getElementById(`slider_${id}`);\n        if (slider && slider.dataset.answered === 'true' && slider.value) {\n          el.textContent = `${I18N[currentLang].selectedPrefix} ${slider.value} - ${LIKERT_VALUE_LABELS[String(slider.value)]}`;\n        }\n      });\n    }\n\n    function shuffleWithRand(arr, rand) {\n      const a = [...arr];\n      for (let i = a.length - 1; i > 0; i--) {\n        const j = Math.floor(rand() * (i + 1));\n        [a[i], a[j]] = [a[j], a[i]];\n      }\n      return a;\n    }\n\n    const DESIGN_K = 4;\n    const DESIGN_N = 15;\n    const DESIGN_R = 3;\n    const DESIGN_ITERATIONS = 1000;\n    const DESIGN_SEED = 20260303;\n    const DISPLAY_RANDOMIZATION_ATTEMPTS = 350;\n    const DISPLAY_RANDOMIZATION_VERSION = 'balanced_display_v2';\n    const BRIDGE_STRICT_MAX_IDENTICAL_SAME_POSITION = 0;\n    const BRIDGE_RELAXED_MAX_IDENTICAL_SAME_POSITION = 1;\n    const DISPLAY_WEIGHTS = {\n      itemPosition: 6,\n      blockExposure: 3,\n      adjacentOverlap: 12,\n      bridgeSetPosition: 20,\n      bridgeItemOverlap: 10,\n      historyPressure: 3\n    };\n    const RANDOMIZATION_HISTORY_KEY = 'maxdiff_display_history_v2';\n    const RANDOMIZATION_HISTORY_LIMIT = 120;\n\n    function createSeededRandom(seed) {\n      let state = seed >>> 0;\n      return function seeded() {\n        state = (1664525 * state + 1013904223) >>> 0;\n        return state \/ 4294967296;\n      };\n    }\n\n    function makeSessionSeed() {\n      const t = Date.now() >>> 0;\n      const perfNow = (typeof performance !== 'undefined' && typeof performance.now === 'function') ? performance.now() : 0;\n      const perf = (Math.floor(perfNow * 1000) >>> 0);\n      const r = Math.floor(Math.random() * 4294967296) >>> 0;\n      return (t ^ perf ^ r ^ DESIGN_SEED) >>> 0;\n    }\n\n    function buildPositionPressure(history, keyName) {\n      const pressure = new Map();\n      history.forEach(entry => {\n        const order = Array.isArray(entry[keyName]) ? entry[keyName] : [];\n        order.forEach((designSetIndex, idx) => {\n          const key = `${idx}|${designSetIndex}`;\n          pressure.set(key, (pressure.get(key) || 0) + 1);\n        });\n      });\n      return pressure;\n    }\n\n    function loadRandomizationHistory() {\n      try {\n        if (!window.localStorage) return [];\n        const raw = window.localStorage.getItem(RANDOMIZATION_HISTORY_KEY);\n        if (!raw) return [];\n        const parsed = JSON.parse(raw);\n        if (!Array.isArray(parsed)) return [];\n        return parsed.filter(entry =>\n          entry &&\n          Array.isArray(entry.part1Order) &&\n          Array.isArray(entry.part2Order) &&\n          entry.part1Order.length === DESIGN_N &&\n          entry.part2Order.length === DESIGN_N\n        ).slice(-RANDOMIZATION_HISTORY_LIMIT);\n      } catch (_) {\n        return [];\n      }\n    }\n\n    function saveRandomizationHistory(entry) {\n      try {\n        if (!window.localStorage) return;\n        const existing = loadRandomizationHistory();\n        const next = existing.concat([entry]).slice(-RANDOMIZATION_HISTORY_LIMIT);\n        window.localStorage.setItem(RANDOMIZATION_HISTORY_KEY, JSON.stringify(next));\n      } catch (_) {\n        \/\/ Silent fail: randomization does not depend on storage access.\n      }\n    }\n\n    function getPairKey(a, b) {\n      return a < b ? `${a}|${b}` : `${b}|${a}`;\n    }\n\n    function getPairVariance(sets) {\n      const ids = MAXDIFF_ITEMS.map(i => i.id);\n      const pairCounts = new Map();\n      for (let i = 0; i < ids.length; i++) {\n        for (let j = i + 1; j < ids.length; j++) {\n          pairCounts.set(getPairKey(ids[i], ids[j]), 0);\n        }\n      }\n      sets.forEach(set => {\n        for (let i = 0; i < set.length; i++) {\n          for (let j = i + 1; j < set.length; j++) {\n            const key = getPairKey(set[i], set[j]);\n            pairCounts.set(key, (pairCounts.get(key) || 0) + 1);\n          }\n        }\n      });\n      const values = Array.from(pairCounts.values());\n      const mean = values.reduce((a, b) => a + b, 0) \/ values.length;\n      return values.reduce((sum, v) => sum + ((v - mean) ** 2), 0) \/ values.length;\n    }\n\n    function hasConnectivity(sets) {\n      const ids = MAXDIFF_ITEMS.map(i => i.id);\n      const graph = new Map(ids.map(id => [id, new Set()]));\n      sets.forEach(set => {\n        for (let i = 0; i < set.length; i++) {\n          for (let j = i + 1; j < set.length; j++) {\n            graph.get(set[i]).add(set[j]);\n            graph.get(set[j]).add(set[i]);\n          }\n        }\n      });\n      const visited = new Set();\n      const queue = [ids[0]];\n      while (queue.length) {\n        const cur = queue.shift();\n        if (visited.has(cur)) continue;\n        visited.add(cur);\n        graph.get(cur).forEach(next => {\n          if (!visited.has(next)) queue.push(next);\n        });\n      }\n      return visited.size === ids.length;\n    }\n\n    function buildCandidateDesign(rand) {\n      const ids = MAXDIFF_ITEMS.map(i => i.id);\n      const remaining = new Map(ids.map(id => [id, DESIGN_R]));\n      const sets = [];\n      const runningPairCounts = new Map();\n\n      for (let s = 0; s < DESIGN_N; s++) {\n        const set = [];\n        for (let slot = 0; slot < DESIGN_K; slot++) {\n          const candidates = ids.filter(id => (remaining.get(id) || 0) > 0 && !set.includes(id));\n          if (!candidates.length) return null;\n\n          let minScore = Infinity;\n          const scored = candidates.map(id => {\n            const pairScore = set.reduce((sum, existing) => {\n              const key = getPairKey(id, existing);\n              return sum + (runningPairCounts.get(key) || 0);\n            }, 0);\n            const usageBoost = (DESIGN_R - (remaining.get(id) || 0));\n            const score = (pairScore * 10) + usageBoost + rand();\n            if (score < minScore) minScore = score;\n            return { id, score };\n          });\n          const bestPool = scored.filter(sv => Math.abs(sv.score - minScore) < 0.0001 || sv.score <= minScore + 1.5);\n          const pick = bestPool[Math.floor(rand() * bestPool.length)].id;\n          set.push(pick);\n          remaining.set(pick, remaining.get(pick) - 1);\n        }\n\n        for (let i = 0; i < set.length; i++) {\n          for (let j = i + 1; j < set.length; j++) {\n            const key = getPairKey(set[i], set[j]);\n            runningPairCounts.set(key, (runningPairCounts.get(key) || 0) + 1);\n          }\n        }\n        sets.push(set);\n      }\n\n      const allUsedExactly = ids.every(id => remaining.get(id) === 0);\n      if (!allUsedExactly) return null;\n      if (!hasConnectivity(sets)) return null;\n      return sets;\n    }\n\n    function buildMaxDiffDesignMatrix() {\n      const rand = createSeededRandom(DESIGN_SEED);\n      let best = null;\n      let bestScore = Infinity;\n\n      for (let i = 0; i < DESIGN_ITERATIONS; i++) {\n        const candidate = buildCandidateDesign(rand);\n        if (!candidate) continue;\n        const score = getPairVariance(candidate);\n        if (score < bestScore) {\n          bestScore = score;\n          best = candidate;\n        }\n      }\n\n      if (!best) {\n        throw new Error('Unable to generate connected MaxDiff design. Please reload.');\n      }\n      return best;\n    }\n\n    function countOverlap(idsA, idsB) {\n      if (!Array.isArray(idsA) || !Array.isArray(idsB)) return 0;\n      const setA = new Set(idsA);\n      let overlap = 0;\n      idsB.forEach(id => { if (setA.has(id)) overlap++; });\n      return overlap;\n    }\n\n    function evaluateDisplayCandidate(candidate, options) {\n      const previousSets = options.previousSets || null;\n      const positionPressure = options.positionPressure || null;\n      const targetPerPosition = DESIGN_R \/ DESIGN_K;\n      const itemPositionCounts = new Map(MAXDIFF_ITEMS.map(item => [item.id, [0, 0, 0, 0]]));\n      const blockCounts = Array.from({ length: 3 }, () => new Map(MAXDIFF_ITEMS.map(item => [item.id, 0])));\n\n      let adjacentOverlapPenalty = 0;\n      let bridgeSetPositionPenalty = 0;\n      let bridgeItemOverlapPenalty = 0;\n      let historyPressurePenalty = 0;\n\n      for (let i = 0; i < candidate.length; i++) {\n        const setObj = candidate[i];\n        const ids = setObj.items.map(it => it.id);\n\n        ids.forEach((id, pos) => {\n          const arr = itemPositionCounts.get(id);\n          arr[pos] += 1;\n          const blockIdx = Math.floor(i \/ 5);\n          blockCounts[blockIdx].set(id, blockCounts[blockIdx].get(id) + 1);\n        });\n\n        if (i > 0) {\n          const prevIds = candidate[i - 1].items.map(it => it.id);\n          const overlap = countOverlap(ids, prevIds);\n          adjacentOverlapPenalty += overlap * overlap;\n        }\n\n        if (previousSets && previousSets[i]) {\n          if (previousSets[i].designSetIndex === setObj.designSetIndex) {\n            bridgeSetPositionPenalty += 1;\n          }\n          const prevPartIds = previousSets[i].items.map(it => it.id);\n          const overlapPrevPart = countOverlap(ids, prevPartIds);\n          bridgeItemOverlapPenalty += overlapPrevPart * overlapPrevPart;\n        }\n\n        if (positionPressure) {\n          historyPressurePenalty += (positionPressure.get(`${i}|${setObj.designSetIndex}`) || 0);\n        }\n      }\n\n      let itemPositionPenalty = 0;\n      itemPositionCounts.forEach(arr => {\n        for (let pos = 0; pos < DESIGN_K; pos++) {\n          itemPositionPenalty += (arr[pos] - targetPerPosition) ** 2;\n        }\n      });\n\n      let blockExposurePenalty = 0;\n      blockCounts.forEach(blockMap => {\n        blockMap.forEach(count => {\n          blockExposurePenalty += (count - 1) ** 2;\n        });\n      });\n\n      const weightedTotal =\n        (itemPositionPenalty * DISPLAY_WEIGHTS.itemPosition) +\n        (blockExposurePenalty * DISPLAY_WEIGHTS.blockExposure) +\n        (adjacentOverlapPenalty * DISPLAY_WEIGHTS.adjacentOverlap) +\n        (bridgeSetPositionPenalty * DISPLAY_WEIGHTS.bridgeSetPosition) +\n        (bridgeItemOverlapPenalty * DISPLAY_WEIGHTS.bridgeItemOverlap) +\n        (historyPressurePenalty * DISPLAY_WEIGHTS.historyPressure);\n\n      return {\n        totalPenalty: weightedTotal,\n        itemPositionPenalty,\n        blockExposurePenalty,\n        adjacentOverlapPenalty,\n        bridgeSetPositionPenalty,\n        bridgeItemOverlapPenalty,\n        historyPressurePenalty\n      };\n    }\n\n    function countSamePositionIdenticalSets(candidate, previousSets) {\n      if (!previousSets || !Array.isArray(previousSets)) return 0;\n      let same = 0;\n      for (let i = 0; i < candidate.length; i++) {\n        if (!previousSets[i]) continue;\n        if (candidate[i].designSetIndex === previousSets[i].designSetIndex) same += 1;\n      }\n      return same;\n    }\n\n    function createRandomizedDisplaySets(designSets, options = {}) {\n      const itemById = new Map(MAXDIFF_ITEMS.map(item => [item.id, item]));\n      const setIndices = Array.from({ length: designSets.length }, (_, i) => i);\n      const previousSets = options.previousSets || null;\n      const positionPressure = options.positionPressure || null;\n      const attempts = Number.isInteger(options.attempts) ? Math.max(1, options.attempts) : DISPLAY_RANDOMIZATION_ATTEMPTS;\n      const baseSeed = (typeof options.seed === 'number' ? options.seed : DESIGN_SEED) >>> 0;\n      const strictBridge = options.strictBridge === true;\n      const strictMaxIdentical = Number.isInteger(options.strictMaxIdenticalSamePosition)\n        ? options.strictMaxIdenticalSamePosition\n        : BRIDGE_STRICT_MAX_IDENTICAL_SAME_POSITION;\n      const relaxedMaxIdentical = Number.isInteger(options.relaxedMaxIdenticalSamePosition)\n        ? options.relaxedMaxIdenticalSamePosition\n        : BRIDGE_RELAXED_MAX_IDENTICAL_SAME_POSITION;\n\n      let bestCandidate = null;\n      let bestQuality = null;\n      let attemptsUsed = attempts;\n      let usedBridgeMode = strictBridge ? 'strict' : 'none';\n      let strictFeasible = false;\n      let relaxedFeasible = false;\n\n      function runSearch(maxIdenticalAllowed) {\n        let localBestCandidate = null;\n        let localBestQuality = null;\n        let localAttemptsUsed = attempts;\n        let feasible = false;\n        for (let attempt = 0; attempt < attempts; attempt++) {\n          const attemptSeed = (baseSeed + (attempt * 2654435761 >>> 0)) >>> 0;\n          const rand = createSeededRandom(attemptSeed);\n          const shuffledSetIndices = shuffleWithRand(setIndices, rand);\n          const candidate = shuffledSetIndices.map((designSetIndex, displayOrder) => {\n            const items = designSets[designSetIndex].map(id => ({ ...itemById.get(id) }));\n            return {\n              designSetIndex,\n              displayOrder,\n              items: shuffleWithRand(items, rand)\n            };\n          });\n\n          if (strictBridge && previousSets) {\n            const samePosIdentical = countSamePositionIdenticalSets(candidate, previousSets);\n            if (samePosIdentical > maxIdenticalAllowed) {\n              continue;\n            }\n          }\n\n          feasible = true;\n          const quality = evaluateDisplayCandidate(candidate, { previousSets, positionPressure });\n          if (!localBestQuality || quality.totalPenalty < localBestQuality.totalPenalty) {\n            localBestCandidate = candidate;\n            localBestQuality = quality;\n            localAttemptsUsed = attempt + 1;\n          }\n          if (quality.totalPenalty === 0) break;\n        }\n        return {\n          candidate: localBestCandidate,\n          quality: localBestQuality,\n          attemptsUsed: localAttemptsUsed,\n          feasible\n        };\n      }\n\n      if (strictBridge && previousSets) {\n        const strictResult = runSearch(strictMaxIdentical);\n        strictFeasible = strictResult.feasible;\n        if (strictResult.candidate) {\n          bestCandidate = strictResult.candidate;\n          bestQuality = strictResult.quality;\n          attemptsUsed = strictResult.attemptsUsed;\n          usedBridgeMode = 'strict';\n        } else {\n          const relaxedResult = runSearch(relaxedMaxIdentical);\n          relaxedFeasible = relaxedResult.feasible;\n          bestCandidate = relaxedResult.candidate;\n          bestQuality = relaxedResult.quality;\n          attemptsUsed = relaxedResult.attemptsUsed;\n          usedBridgeMode = 'relaxed';\n        }\n      } else {\n        const normalResult = runSearch(BRIDGE_RELAXED_MAX_IDENTICAL_SAME_POSITION);\n        bestCandidate = normalResult.candidate;\n        bestQuality = normalResult.quality;\n        attemptsUsed = normalResult.attemptsUsed;\n      }\n\n      if (!bestCandidate || !bestQuality) {\n        throw new Error('Unable to generate randomized display sets. Please reload.');\n      }\n\n      return {\n        sets: bestCandidate,\n        quality: bestQuality,\n        attemptsUsed,\n        bridgeMode: usedBridgeMode,\n        strictFeasible,\n        relaxedFeasible\n      };\n    }\n\n    function renderLikertCards(containerId, items, groupName) {\n      const container = document.getElementById(containerId);\n      container.innerHTML = '';\n      items.forEach((item, idx) => {\n        const card = document.createElement('div');\n        card.className = 'likert-card';\n        card.id = `q-${groupName}-${item.id}`;\n        card.innerHTML = `\n          <p><strong>${idx + 1}.<\/strong> ${item.text}<\/p>\n          <div class=\"likert-segment-track\" id=\"segments_${item.id}\" role=\"radiogroup\" aria-label=\"${item.text}\">\n            <button type=\"button\" class=\"likert-segment\" data-slider-value=\"1\" aria-label=\"1 - Does not apply to us\"><\/button>\n            <button type=\"button\" class=\"likert-segment\" data-slider-value=\"2\" aria-label=\"2 - Rather does not apply\"><\/button>\n            <button type=\"button\" class=\"likert-segment\" data-slider-value=\"3\" aria-label=\"3 - Rather applies\"><\/button>\n            <button type=\"button\" class=\"likert-segment\" data-slider-value=\"4\" aria-label=\"4 - Fully applies to us\"><\/button>\n          <\/div>\n          <input type=\"hidden\" id=\"slider_${item.id}\" data-item-id=\"${item.id}\" data-group=\"${groupName}\" data-answered=\"false\" value=\"\">\n          <div class=\"likert-scale-labels\">\n            <span class=\"likert-scale-label pos-1\" data-slider-value=\"1\"><span class=\"num\">1<\/span>Does not apply<\/span>\n            <span class=\"likert-scale-label pos-2\" data-slider-value=\"2\"><span class=\"num\">2<\/span>Rather does not apply<\/span>\n            <span class=\"likert-scale-label pos-3\" data-slider-value=\"3\"><span class=\"num\">3<\/span>Rather applies<\/span>\n            <span class=\"likert-scale-label pos-4\" data-slider-value=\"4\"><span class=\"num\">4<\/span>Fully applies<\/span>\n          <\/div>\n          <div class=\"likert-current\" id=\"slider_text_${item.id}\"><\/div>\n        `;\n        const slider = card.querySelector(`#slider_${item.id}`);\n        const text = card.querySelector(`#slider_text_${item.id}`);\n        const segmentTrack = card.querySelector(`#segments_${item.id}`);\n        const segments = segmentTrack.querySelectorAll('.likert-segment');\n        const applySliderSelection = (value) => {\n          const numericValue = Number(value);\n          slider.value = String(value);\n          slider.dataset.answered = 'true';\n          segments.forEach(seg => {\n            seg.classList.toggle('selected', Number(seg.dataset.sliderValue) <= numericValue);\n          });\n          text.textContent = `${I18N[currentLang].selectedPrefix} ${value} - ${LIKERT_VALUE_LABELS[String(value)]}`;\n          if (groupName === 'npd') {\n            const err = document.getElementById('error-likert-npd');\n            if (err) { err.classList.remove('show'); err.innerHTML = ''; }\n          } else {\n            const err = document.getElementById('error-likert-mediators');\n            if (err) { err.classList.remove('show'); err.innerHTML = ''; }\n          }\n        };\n        segments.forEach(seg => {\n          seg.addEventListener('click', () => applySliderSelection(seg.dataset.sliderValue));\n        });\n        card.querySelectorAll('.likert-scale-label[data-slider-value]').forEach(lbl => {\n          lbl.addEventListener('click', () => {\n            applySliderSelection(lbl.dataset.sliderValue);\n          });\n        });\n        container.appendChild(card);\n      });\n    }\n\n    let maxDiff1Sets = [];\n    let maxDiff2Sets = [];\n    let randomizationMeta = null;\n\n    function renderMaxDiffSection(containerId, sets, partType, startIdx = 0, endIdx = sets.length) {\n      const container = document.getElementById(containerId);\n      container.innerHTML = '';\n      const anchorTexts = partType === 'importance'\n        ? ['All four are important for our NPD success', 'None of these are important for our NPD success', 'Some are important, some are not']\n        : ['All four actually influence our NPD projects', 'None of these actually influence our NPD projects', 'Some influence our NPD projects, some do not'];\n      const anchorValues = ['all', 'none', 'some'];\n\n      for (let setIdx = startIdx; setIdx < endIdx; setIdx++) {\n        const setObj = sets[setIdx];\n        const set = setObj.items;\n        const setDiv = document.createElement('div');\n        setDiv.className = 'maxdiff-set';\n        setDiv.dataset.setIndex = setIdx;\n        setDiv.dataset.designSetIndex = setObj.designSetIndex;\n        setDiv.id = `${partType}-set-${setIdx}`;\n        setDiv.innerHTML = `<h3>${I18N[currentLang].setLabel(setIdx + 1, sets.length)}<\/h3>`;\n        const setHelp = document.createElement('p');\n        setHelp.className = 'set-help';\n        setHelp.textContent = I18N[currentLang].setHelp;\n        setDiv.appendChild(setHelp);\n\n        const col1 = partType === 'importance' ? 'Most important' : 'Influences most';\n        const col2 = partType === 'importance' ? 'Least important' : 'Influences least';\n        const table = document.createElement('table');\n        table.className = 'maxdiff-table';\n        table.innerHTML = `<thead><tr><th>Factor<\/th><th>${col1}<\/th><th>${col2}<\/th><\/tr><\/thead><tbody><\/tbody>`;\n        const tbody = table.querySelector('tbody');\n        set.forEach(item => {\n          const tr = document.createElement('tr');\n          const tdBest = document.createElement('td');\n          const tdWorst = document.createElement('td');\n          const cellBest = document.createElement('div');\n          cellBest.className = 'maxdiff-cell';\n          cellBest.dataset.role = 'best';\n          cellBest.dataset.itemId = item.id;\n          cellBest.dataset.setIndex = setIdx;\n          cellBest.innerHTML = '\u25cb';\n          cellBest.onclick = () => handleMaxDiffCellClick(cellBest, setIdx, item.id, 'best', partType);\n          const cellWorst = document.createElement('div');\n          cellWorst.className = 'maxdiff-cell worst';\n          cellWorst.dataset.role = 'worst';\n          cellWorst.dataset.itemId = item.id;\n          cellWorst.dataset.setIndex = setIdx;\n          cellWorst.innerHTML = '\u25cb';\n          cellWorst.onclick = () => handleMaxDiffCellClick(cellWorst, setIdx, item.id, 'worst', partType);\n          tdBest.appendChild(cellBest);\n          tdWorst.appendChild(cellWorst);\n          const tdLabel = document.createElement('td');\n          setMaxDiffFactorCellText(tdLabel, itemText(item.id, item.text, MAXDIFF_ITEM_TRANSLATIONS));\n          tr.appendChild(tdLabel);\n          tr.appendChild(tdBest);\n          tr.appendChild(tdWorst);\n          tbody.appendChild(tr);\n        });\n        setDiv.appendChild(table);\n\n        const anchorDiv = document.createElement('div');\n        anchorDiv.className = 'anchor-options';\n        anchorDiv.innerHTML = '<p><strong>For the four factors above, would you say:<\/strong><\/p>';\n        anchorValues.forEach((val, i) => {\n          const opt = document.createElement('label');\n          opt.className = 'anchor-option';\n          opt.innerHTML = `<input type=\"radio\" name=\"anchor_${partType}_${setIdx}\" value=\"${val}\"> ${anchorTexts[i]}`;\n          opt.onclick = (e) => { if (!e.target.matches('input')) opt.querySelector('input').click(); };\n          opt.querySelector('input').addEventListener('change', () => {\n            opt.classList.add('selected');\n            opt.parentElement.querySelectorAll('.anchor-option').forEach(o => { if (o !== opt) o.classList.remove('selected'); });\n            const setError = document.getElementById(`error-${partType}-${setIdx}`);\n            if (setError) {\n              setError.classList.remove('show');\n              setError.textContent = '';\n            }\n            const sectionErrorIds = partType === 'importance'\n              ? ['error-maxdiff1a', 'error-maxdiff1b', 'error-maxdiff1c']\n              : ['error-maxdiff2a', 'error-maxdiff2b', 'error-maxdiff2c'];\n            sectionErrorIds.forEach(id => {\n              const sectionError = document.getElementById(id);\n              if (sectionError) {\n                sectionError.classList.remove('show');\n                sectionError.innerHTML = '';\n              }\n            });\n          });\n          anchorDiv.appendChild(opt);\n        });\n        setDiv.appendChild(anchorDiv);\n        const setError = document.createElement('p');\n        setError.className = 'set-error';\n        setError.id = `error-${partType}-${setIdx}`;\n        setDiv.appendChild(setError);\n        container.appendChild(setDiv);\n      }\n    }\n\n    function handleMaxDiffCellClick(cell, setIdx, itemId, role, partType) {\n      const store = partType === 'importance' ? maxDiff1State : maxDiff2State;\n      if (!store[setIdx]) store[setIdx] = { best: null, worst: null };\n      const current = store[setIdx];\n      const setDiv = cell.closest('.maxdiff-set');\n      const cells = setDiv.querySelectorAll('.maxdiff-cell');\n\n      if (role === 'best') {\n        if (current.best === itemId) {\n          current.best = null;\n        } else {\n          current.best = itemId;\n          if (current.worst === itemId) current.worst = null;\n        }\n      } else {\n        if (current.worst === itemId) {\n          current.worst = null;\n        } else {\n          current.worst = itemId;\n          if (current.best === itemId) current.best = null;\n        }\n      }\n\n      cells.forEach(c => {\n        c.classList.remove('selected');\n        const cItemId = c.dataset.itemId;\n        const cRole = c.dataset.role;\n        if (cRole === 'best' && store[setIdx].best === cItemId) c.classList.add('selected');\n        if (cRole === 'worst' && store[setIdx].worst === cItemId) c.classList.add('selected');\n        c.textContent = c.classList.contains('selected') ? '\u25cf' : '\u25cb';\n      });\n\n      const sectionErrorIds = partType === 'importance'\n        ? ['error-maxdiff1a', 'error-maxdiff1b', 'error-maxdiff1c']\n        : ['error-maxdiff2a', 'error-maxdiff2b', 'error-maxdiff2c'];\n      sectionErrorIds.forEach(id => {\n        const err = document.getElementById(id);\n        if (err) {\n          err.classList.remove('show');\n          err.innerHTML = '';\n        }\n      });\n      const setError = document.getElementById(`error-${partType}-${setIdx}`);\n      if (setError) {\n        setError.classList.remove('show');\n        setError.textContent = '';\n      }\n    }\n\n    let maxDiff1State = {};\n    let maxDiff2State = {};\n\n    const MAXDIFF_SET_COUNT = DESIGN_N;\n\n    function initQuestionnaire() {\n      const designMatrix = buildMaxDiffDesignMatrix();\n      const sessionSeed = makeSessionSeed();\n      const part1Seed = (sessionSeed ^ 0x1f123bb5) >>> 0;\n      const part2Seed = (sessionSeed ^ 0x9e3779b9) >>> 0;\n      const history = loadRandomizationHistory();\n      const part1PositionPressure = buildPositionPressure(history, 'part1Order');\n      const part2PositionPressure = buildPositionPressure(history, 'part2Order');\n\n      const part1Result = createRandomizedDisplaySets(designMatrix, {\n        seed: part1Seed,\n        attempts: DISPLAY_RANDOMIZATION_ATTEMPTS,\n        positionPressure: part1PositionPressure\n      });\n      const part2Result = createRandomizedDisplaySets(designMatrix, {\n        seed: part2Seed,\n        attempts: DISPLAY_RANDOMIZATION_ATTEMPTS,\n        previousSets: part1Result.sets,\n        positionPressure: part2PositionPressure,\n        strictBridge: true,\n        strictMaxIdenticalSamePosition: BRIDGE_STRICT_MAX_IDENTICAL_SAME_POSITION,\n        relaxedMaxIdenticalSamePosition: BRIDGE_RELAXED_MAX_IDENTICAL_SAME_POSITION\n      });\n\n      maxDiff1Sets = part1Result.sets;\n      maxDiff2Sets = part2Result.sets;\n\n      randomizationMeta = {\n        version: DISPLAY_RANDOMIZATION_VERSION,\n        sessionSeed,\n        part1Seed,\n        part2Seed,\n        attemptsConfigured: DISPLAY_RANDOMIZATION_ATTEMPTS,\n        part1AttemptsUsed: part1Result.attemptsUsed,\n        part2AttemptsUsed: part2Result.attemptsUsed,\n        part1Quality: part1Result.quality,\n        part2Quality: part2Result.quality,\n        historyEntriesUsed: history.length,\n        bridgeEnabled: true,\n        bridgeMode: part2Result.bridgeMode,\n        strictBridgeFeasible: part2Result.strictFeasible,\n        relaxedBridgeFeasible: part2Result.relaxedFeasible,\n        bridgeMaxIdenticalSamePosition: part2Result.bridgeMode === 'strict'\n          ? BRIDGE_STRICT_MAX_IDENTICAL_SAME_POSITION\n          : BRIDGE_RELAXED_MAX_IDENTICAL_SAME_POSITION\n      };\n\n      saveRandomizationHistory({\n        createdAt: new Date().toISOString(),\n        part1Order: maxDiff1Sets.map(s => s.designSetIndex),\n        part2Order: maxDiff2Sets.map(s => s.designSetIndex)\n      });\n\n      renderMaxDiffSection('maxdiff1a-sets', maxDiff1Sets, 'importance', 0, 5);\n      renderMaxDiffSection('maxdiff1b-sets', maxDiff1Sets, 'importance', 5, 10);\n      renderMaxDiffSection('maxdiff1c-sets', maxDiff1Sets, 'importance', 10, 15);\n      renderMaxDiffSection('maxdiff2a-sets', maxDiff2Sets, 'influence', 0, 5);\n      renderMaxDiffSection('maxdiff2b-sets', maxDiff2Sets, 'influence', 5, 10);\n      renderMaxDiffSection('maxdiff2c-sets', maxDiff2Sets, 'influence', 10, 15);\n      renderLikertCards('likert-npd-body', NPD_ITEMS, 'npd');\n      renderLikertCards('likert-mediators-body', MEDIATOR_ITEMS, 'mediators');\n      setupLiveValidationHandlers();\n    }\n\n    function toggleConditionalOtherInputs() {\n      const d3Val = document.querySelector('input[name=\"d3\"]:checked')?.value;\n      const d10Val = document.querySelector('input[name=\"d10\"]:checked')?.value;\n      const d3Other = document.getElementById('d3_other');\n      const d10Other = document.getElementById('d10_other');\n      if (d3Other) {\n        d3Other.style.display = d3Val === 'Other' ? 'block' : 'none';\n        if (d3Val !== 'Other') d3Other.value = '';\n      }\n      if (d10Other) {\n        d10Other.style.display = d10Val === 'Other' ? 'block' : 'none';\n        if (d10Val !== 'Other') d10Other.value = '';\n      }\n      document.querySelector('[data-error=\"d3_other\"]')?.classList.remove('show');\n      document.querySelector('[data-error=\"d10_other\"]')?.classList.remove('show');\n    }\n\n    function setupLiveValidationHandlers() {\n      ['s1', 's2', 's3', 's4'].forEach(name => {\n        document.querySelectorAll(`input[name=\"${name}\"]`).forEach(input => {\n          input.addEventListener('change', () => {\n            document.querySelector(`[data-error=\"${name}\"]`)?.classList.remove('show');\n            renderSectionMissingSummary('error-screening', '', []);\n          });\n        });\n      });\n\n      ['d1','d4','d6','d7'].forEach(id => {\n        const el = document.getElementById(id);\n        if (!el) return;\n        const clearDemoError = () => {\n          document.querySelector(`[data-error=\"${id}\"]`)?.classList.remove('show');\n          renderSectionMissingSummary('error-demographics', '', []);\n        };\n        el.addEventListener('input', clearDemoError);\n        el.addEventListener('change', clearDemoError);\n      });\n      ['d2','d3','d5','d8','d9','d10'].forEach(name => {\n        document.querySelectorAll(`input[name=\"${name}\"]`).forEach(input => {\n          input.addEventListener('change', () => {\n            document.querySelector(`[data-error=\"${name}\"]`)?.classList.remove('show');\n            renderSectionMissingSummary('error-demographics', '', []);\n            if (name === 'd3' || name === 'd10') toggleConditionalOtherInputs();\n          });\n        });\n      });\n      ['d3_other','d10_other'].forEach(id => {\n        const el = document.getElementById(id);\n        if (!el) return;\n        el.addEventListener('input', () => {\n          document.querySelector(`[data-error=\"${id}\"]`)?.classList.remove('show');\n          renderSectionMissingSummary('error-demographics', '', []);\n        });\n      });\n    }\n\n    document.getElementById('btnStart').onclick = () => {\n      sessionStartTime = Date.now();\n      showSection('screening');\n    };\n    initQuestionnaire();\n\n    function showSection(id) {\n      document.querySelectorAll('.section').forEach(s => s.classList.remove('active'));\n      document.getElementById(id).classList.add('active');\n      currentSectionIndex = SECTIONS.indexOf(id);\n      updateProgress(id);\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n    }\n\n    function jumpToElement(targetId) {\n      const el = document.getElementById(targetId);\n      if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    }\n\n    function renderSectionMissingSummary(sectionErrorId, title, missingItems) {\n      const sectionError = document.getElementById(sectionErrorId);\n      if (!sectionError) return;\n      if (!missingItems.length) {\n        sectionError.classList.remove('show');\n        sectionError.innerHTML = '';\n        return;\n      }\n      const listHtml = missingItems.map(item =>\n        `<div><button type=\"button\" class=\"set-error-link\" onclick=\"jumpToElement('${item.targetId}')\">${item.label}<\/button><\/div>`\n      ).join('');\n      sectionError.innerHTML = `<strong>${title}<\/strong><br>${listHtml}`;\n      sectionError.classList.add('show');\n    }\n\n    function buildMissingSetMessage(missing, partType, setIdx) {\n      const labels = [];\n      if (missing.best) labels.push(currentLang === 'ru' ? '\u043e\u0434\u0438\u043d \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0439 \u043f\u0443\u043d\u043a\u0442' : currentLang === 'zh' ? '\u4e00\u4e2a\u6700\u4f73\u9009\u9879' : 'one best item');\n      if (missing.worst) labels.push(currentLang === 'ru' ? '\u043e\u0434\u0438\u043d \u043d\u0430\u0438\u0445\u0443\u0434\u0448\u0438\u0439 \u043f\u0443\u043d\u043a\u0442' : currentLang === 'zh' ? '\u4e00\u4e2a\u6700\u5dee\u9009\u9879' : 'one worst item');\n      if (missing.anchor) labels.push(currentLang === 'ru' ? '\u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441' : currentLang === 'zh' ? '\u951a\u5b9a\u95ee\u9898\u56de\u7b54' : 'anchor answer');\n      if (currentLang === 'ru') return `\u041d\u0430\u0431\u043e\u0440 ${setIdx + 1}: \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 ${labels.join(', ')}.`;\n      if (currentLang === 'zh') return `\u7b2c ${setIdx + 1} \u7ec4\uff1a\u8bf7\u9009\u62e9${labels.join('\u3001')}\u3002`;\n      return `Set ${setIdx + 1}: Please select ${labels.join(', ')}.`;\n    }\n\n    function validateMaxDiffPart(partType, sets, stateStore, sectionErrorId, startIdx = 0, endIdx = sets.length) {\n      let valid = true;\n      const summaryLines = [];\n      const sectionError = document.getElementById(sectionErrorId);\n      if (sectionError) {\n        sectionError.classList.remove('show');\n        sectionError.innerHTML = '';\n      }\n\n      for (let i = startIdx; i < endIdx; i++) {\n        const state = stateStore[i] || { best: null, worst: null };\n        const anchor = document.querySelector(`input[name=\"anchor_${partType}_${i}\"]:checked`)?.value;\n        const missing = {\n          best: !state.best,\n          worst: !state.worst,\n          anchor: !anchor\n        };\n        const hasMissing = missing.best || missing.worst || missing.anchor;\n        const setError = document.getElementById(`error-${partType}-${i}`);\n\n        if (hasMissing) {\n          valid = false;\n          const msg = buildMissingSetMessage(missing, partType, i);\n          if (setError) {\n            setError.textContent = msg;\n            setError.classList.add('show');\n          }\n          summaryLines.push({ setIdx: i, message: msg });\n        } else if (setError) {\n          setError.textContent = '';\n          setError.classList.remove('show');\n        }\n      }\n\n      if (!valid && sectionError) {\n        const listHtml = summaryLines.map(item =>\n          `<div><button type=\"button\" class=\"set-error-link\" onclick=\"jumpToMaxDiffSet('${partType}', ${item.setIdx})\">${item.message}<\/button><\/div>`\n        ).join('');\n        sectionError.innerHTML = `<strong>${I18N[currentLang].mandatoryList}<\/strong><br>${listHtml}`;\n        sectionError.classList.add('show');\n      }\n\n      return valid;\n    }\n\n    function jumpToMaxDiffSet(partType, setIdx) {\n      const el = document.getElementById(`${partType}-set-${setIdx}`);\n      if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    }\n\n    function prevSection() {\n      if (currentSectionIndex > 0) showSection(SECTIONS[currentSectionIndex - 1]);\n    }\n\n    function validateSection(sectionId) {\n      let valid = true;\n      document.querySelectorAll(`#${sectionId} .error-msg`).forEach(el => el.classList.remove('show'));\n      document.querySelectorAll(`#${sectionId} [data-error]`).forEach(el => el.classList.remove('show'));\n\n      if (sectionId === 'screening') {\n        document.getElementById('screening-ineligible').style.display = 'none';\n        renderSectionMissingSummary('error-screening', '', []);\n        const s1 = document.querySelector('input[name=\"s1\"]:checked')?.value;\n        const s2 = document.querySelector('input[name=\"s2\"]:checked')?.value;\n        const s3 = document.querySelector('input[name=\"s3\"]:checked')?.value;\n        const s4 = document.querySelector('input[name=\"s4\"]:checked')?.value;\n        const missingItems = [];\n        if (!s1) { document.querySelector('[data-error=\"s1\"]').classList.add('show'); valid = false; missingItems.push({ label: 'Question 1 is missing', targetId: 'q-screening-s1' }); }\n        if (!s2) { document.querySelector('[data-error=\"s2\"]').classList.add('show'); valid = false; missingItems.push({ label: 'Question 2 is missing', targetId: 'q-screening-s2' }); }\n        if (!s3) { document.querySelector('[data-error=\"s3\"]').classList.add('show'); valid = false; missingItems.push({ label: 'Question 3 is missing', targetId: 'q-screening-s3' }); }\n        if (!s4) { document.querySelector('[data-error=\"s4\"]').classList.add('show'); valid = false; missingItems.push({ label: 'Question 4 (consent) is missing', targetId: 'q-screening-s4' }); }\n        if (missingItems.length) {\n          renderSectionMissingSummary('error-screening', I18N[currentLang].mandatoryList, missingItems);\n        }\n        if (!valid) return false;\n        if (s1 === 'no' || s4 === 'no') {\n          document.getElementById('screening-ineligible').style.display = 'block';\n          return false;\n        }\n        return true;\n      }\n\n      if (sectionId === 'demographics') {\n        renderSectionMissingSummary('error-demographics', '', []);\n        const textFields = ['d1','d4','d6','d7'];\n        const radioFields = ['d2','d3','d5','d8','d9','d10'];\n        const questionLabels = {\n          d1: 'Country is missing',\n          d2: 'Company size is missing',\n          d3: 'Industry sector is missing',\n          d4: 'Years in operation is missing',\n          d5: 'NPD projects count is missing',\n          d6: 'Job title or role is missing',\n          d7: 'Years of experience is missing',\n          d8: 'Risk management department answer is missing',\n          d9: 'NPD familiarity is missing',\n          d10: 'Primary role in NPD is missing'\n        };\n        const missingItems = [];\n        textFields.forEach(q => {\n          const val = document.getElementById(q)?.value?.trim();\n          const errEl = document.querySelector(`[data-error=\"${q}\"]`);\n          if (!val) {\n            if (errEl) errEl.classList.add('show');\n            valid = false;\n            missingItems.push({ label: questionLabels[q], targetId: `q-demographics-${q}` });\n          }\n        });\n        radioFields.forEach(q => {\n          const val = document.querySelector(`input[name=\"${q}\"]:checked`)?.value;\n          const errEl = document.querySelector(`[data-error=\"${q}\"]`);\n          if (!val) {\n            if (errEl) errEl.classList.add('show');\n            valid = false;\n            missingItems.push({ label: questionLabels[q], targetId: `q-demographics-${q}` });\n          }\n        });\n        const d3Val = document.querySelector('input[name=\"d3\"]:checked')?.value;\n        const d10Val = document.querySelector('input[name=\"d10\"]:checked')?.value;\n        const d3Other = document.getElementById('d3_other')?.value?.trim();\n        const d10Other = document.getElementById('d10_other')?.value?.trim();\n        if (d3Val === 'Other' && !d3Other) {\n          document.querySelector('[data-error=\"d3_other\"]')?.classList.add('show');\n          valid = false;\n          missingItems.push({ label: 'Primary industry (Other) is missing', targetId: 'q-demographics-d3' });\n        }\n        if (d10Val === 'Other' && !d10Other) {\n          document.querySelector('[data-error=\"d10_other\"]')?.classList.add('show');\n          valid = false;\n          missingItems.push({ label: 'Primary role in NPD (Other) is missing', targetId: 'q-demographics-d10' });\n        }\n        if (missingItems.length) {\n          renderSectionMissingSummary('error-demographics', I18N[currentLang].mandatoryList, missingItems);\n        }\n        return valid;\n      }\n\n      if (sectionId === 'maxdiff1a') {\n        return validateMaxDiffPart('importance', maxDiff1Sets, maxDiff1State, 'error-maxdiff1a', 0, 5);\n      }\n\n      if (sectionId === 'maxdiff1b') {\n        return validateMaxDiffPart('importance', maxDiff1Sets, maxDiff1State, 'error-maxdiff1b', 5, 10);\n      }\n\n      if (sectionId === 'maxdiff1c') {\n        return validateMaxDiffPart('importance', maxDiff1Sets, maxDiff1State, 'error-maxdiff1c', 10, 15);\n      }\n\n      if (sectionId === 'maxdiff2a') {\n        return validateMaxDiffPart('influence', maxDiff2Sets, maxDiff2State, 'error-maxdiff2a', 0, 5);\n      }\n\n      if (sectionId === 'maxdiff2b') {\n        return validateMaxDiffPart('influence', maxDiff2Sets, maxDiff2State, 'error-maxdiff2b', 5, 10);\n      }\n\n      if (sectionId === 'maxdiff2c') {\n        return validateMaxDiffPart('influence', maxDiff2Sets, maxDiff2State, 'error-maxdiff2c', 10, 15);\n      }\n\n      if (sectionId === 'likert-npd') {\n        renderSectionMissingSummary('error-likert-npd', '', []);\n        const missing = NPD_ITEMS.filter(it => {\n          const slider = document.getElementById(`slider_${it.id}`);\n          return !slider || slider.dataset.answered !== 'true';\n        });\n        if (missing.length) {\n          renderSectionMissingSummary(\n            'error-likert-npd',\n            I18N[currentLang].mandatoryList,\n            missing.map(it => ({ label: `${it.id} is missing`, targetId: `q-npd-${it.id}` }))\n          );\n          return false;\n        }\n        return true;\n      }\n\n      if (sectionId === 'likert-mediators') {\n        renderSectionMissingSummary('error-likert-mediators', '', []);\n        const missing = MEDIATOR_ITEMS.filter(it => {\n          const slider = document.getElementById(`slider_${it.id}`);\n          return !slider || slider.dataset.answered !== 'true';\n        });\n        if (missing.length) {\n          renderSectionMissingSummary(\n            'error-likert-mediators',\n            I18N[currentLang].mandatoryList,\n            missing.map(it => ({ label: `${it.id} is missing`, targetId: `q-mediators-${it.id}` }))\n          );\n          return false;\n        }\n        return true;\n      }\n\n      return valid;\n    }\n\n    function generateResponseId() {\n      const t = Date.now().toString(36);\n      const r = Math.random().toString(36).slice(2, 10);\n      return 'resp_' + t + '_' + r;\n    }\n\n    function collectResponses() {\n      const submittedAt = new Date().toISOString();\n      const durationSec = sessionStartTime != null ? Math.round((Date.now() - sessionStartTime) \/ 1000) : 0;\n      const data = {\n        responseId: generateResponseId(),\n        schemaVersion: SCHEMA_VERSION,\n        submittedAt: submittedAt,\n        durationSec: durationSec,\n        timestamp: submittedAt,\n        sessionKey: sessionStartTime != null ? String(sessionStartTime).slice(-8) + (navigator.userAgent || '').slice(0, 40) : '',\n        maxdiffDesign: {\n          K: MAXDIFF_ITEMS.length,\n          k: DESIGN_K,\n          N: DESIGN_N,\n          r: DESIGN_R,\n          seed: DESIGN_SEED\n        },\n        maxdiffDisplayRandomization: randomizationMeta ? { ...randomizationMeta } : null,\n        screening: {\n          s1: document.querySelector('input[name=\"s1\"]:checked')?.value,\n          s2: document.querySelector('input[name=\"s2\"]:checked')?.value,\n          s3: document.querySelector('input[name=\"s3\"]:checked')?.value,\n          s4: document.querySelector('input[name=\"s4\"]:checked')?.value\n        },\n        demographics: {},\n        maxdiff1: [],\n        maxdiff2: [],\n        likertNPD: {},\n        likertMediators: {}\n      };\n      ['d1','d2','d3','d4','d5','d6','d7','d8','d9','d10'].forEach(q => {\n        const el = document.getElementById(q) || document.querySelector(`input[name=\"${q}\"]:checked`);\n        data.demographics[q] = el?.value;\n      });\n      data.demographics.d3_other = document.getElementById('d3_other')?.value?.trim() || '';\n      data.demographics.d10_other = document.getElementById('d10_other')?.value?.trim() || '';\n      maxDiff1Sets.forEach((setObj, i) => {\n        data.maxdiff1.push({\n          designSetIndex: setObj.designSetIndex,\n          displayedItemOrder: setObj.items.map(it => it.id),\n          best: maxDiff1State[i]?.best,\n          worst: maxDiff1State[i]?.worst,\n          anchor: document.querySelector(`input[name=\"anchor_importance_${i}\"]:checked`)?.value\n        });\n      });\n      maxDiff2Sets.forEach((setObj, i) => {\n        data.maxdiff2.push({\n          designSetIndex: setObj.designSetIndex,\n          displayedItemOrder: setObj.items.map(it => it.id),\n          best: maxDiff2State[i]?.best,\n          worst: maxDiff2State[i]?.worst,\n          anchor: document.querySelector(`input[name=\"anchor_influence_${i}\"]:checked`)?.value\n        });\n      });\n      NPD_ITEMS.forEach(it => {\n        const slider = document.getElementById(`slider_${it.id}`);\n        data.likertNPD[it.id] = slider?.dataset?.answered === 'true' ? slider.value : null;\n      });\n      MEDIATOR_ITEMS.forEach(it => {\n        const slider = document.getElementById(`slider_${it.id}`);\n        data.likertMediators[it.id] = slider?.dataset?.answered === 'true' ? slider.value : null;\n      });\n      return data;\n    }\n\n    function setSubmitStatus(className, html) {\n      const el = document.getElementById('submit-status');\n      if (!el) return;\n      el.className = 'submit-status ' + (className || '');\n      el.innerHTML = html || '';\n    }\n\n    function wrapTextForPdf(doc, text, x, y, maxWidth, lineHeight) {\n      const lines = doc.splitTextToSize(text, maxWidth);\n      lines.forEach(line => {\n        doc.text(line, x, y);\n        y += lineHeight;\n      });\n      return y;\n    }\n\n    async function downloadResearchOverviewPdf() {\n      const btn = document.getElementById('btnDownloadOverview');\n      const oldText = btn ? btn.textContent : '';\n      try {\n        if (btn) {\n          btn.disabled = true;\n          btn.textContent = currentLang === 'ru' ? '\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 PDF\u2026' : currentLang === 'zh' ? '\u6b63\u5728\u751f\u6210PDF\u2026' : 'Preparing PDF\u2026';\n        }\n        const md = RESEARCH_OVERVIEW_MD;\n        const jspdfNs = window.jspdf;\n        if (!jspdfNs || !jspdfNs.jsPDF) throw new Error('PDF library unavailable.');\n        const { jsPDF } = jspdfNs;\n        const doc = new jsPDF({ unit: 'pt', format: 'a4' });\n        const margin = 48;\n        const pageW = doc.internal.pageSize.getWidth();\n        const pageH = doc.internal.pageSize.getHeight();\n        const maxWidth = pageW - margin * 2;\n        let y = margin;\n        const lineHeight = 15;\n\n        doc.setFont('helvetica', 'bold');\n        doc.setFontSize(16);\n        doc.text('Research Overview', margin, y);\n        y += 24;\n        doc.setFont('helvetica', 'normal');\n        doc.setFontSize(11);\n\n        const plainText = md\n          .replace(\/\\r\\n\/g, '\\n')\n          .replace(\/^#{1,6}\\s*\/gm, '')\n          .replace(\/\\*\\*(.*?)\\*\\*\/g, '$1')\n          .replace(\/\\*(.*?)\\*\/g, '$1')\n          .replace(\/`([^`]+)`\/g, '$1')\n          .replace(\/\\[(.*?)\\]\\((.*?)\\)\/g, '$1 ($2)');\n\n        const paragraphs = plainText.split('\\n');\n        paragraphs.forEach(paragraph => {\n          const text = paragraph.trim();\n          if (!text) {\n            y += lineHeight * 0.8;\n            if (y > pageH - margin) {\n              doc.addPage();\n              y = margin;\n            }\n            return;\n          }\n          if (y > pageH - margin - lineHeight * 2) {\n            doc.addPage();\n            y = margin;\n          }\n          y = wrapTextForPdf(doc, text, margin, y, maxWidth, lineHeight);\n          y += 2;\n        });\n\n        doc.save('RESEARCH_OVERVIEW.pdf');\n      } catch (e) {\n        alert(currentLang === 'ru'\n          ? '\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c PDF. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430.'\n          : currentLang === 'zh'\n            ? '\u65e0\u6cd5\u751f\u6210PDF\uff0c\u8bf7\u91cd\u8bd5\u3002'\n            : 'Could not generate PDF. Please try again.');\n        console.error(e);\n      } finally {\n        if (btn) {\n          btn.disabled = false;\n          btn.textContent = oldText || I18N[currentLang].downloadOverview;\n        }\n      }\n    }\n\n    async function submitToGoogleSheets(data) {\n      const SCRIPT_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycbyReoNJ_JIhsXIPZExYe21cMRrKlr5fkzw4oGNX4S6j4NcWYocrzKfJSD0uoSq3UIZy\/exec';\n      if (!SCRIPT_URL) {\n        console.log('Responses (for testing):', JSON.stringify(data, null, 2));\n        return Promise.resolve();\n      }\n      const maxRetries = 2;\n      for (let attempt = 1; attempt <= maxRetries; attempt++) {\n        try {\n          let res = null;\n          try {\n            res = await fetch(SCRIPT_URL, {\n              method: 'POST',\n              mode: 'cors',\n              headers: { 'Content-Type': 'application\/json' },\n              body: JSON.stringify(data)\n            });\n          } catch (corsError) {\n            await fetch(SCRIPT_URL, {\n              method: 'POST',\n              mode: 'no-cors',\n              headers: { 'Content-Type': 'text\/plain;charset=utf-8' },\n              body: JSON.stringify(data)\n            });\n            return;\n          }\n          const text = await res.text();\n          let parsed = null;\n          try { parsed = JSON.parse(text); } catch (_) {}\n          if (res.ok && parsed && parsed.result === 'success') return;\n          if (attempt < maxRetries) await new Promise(r => setTimeout(r, 1000 * attempt));\n        } catch (e) {\n          console.error('Submit error:', e);\n          if (attempt < maxRetries) await new Promise(r => setTimeout(r, 1000 * attempt));\n          else throw e;\n        }\n      }\n      throw new Error('Submission was not accepted.');\n    }\n\n    function validateAndNext(sectionId) {\n      if (!validateSection(sectionId)) return;\n      if (sectionId === 'likert-mediators') {\n        const btn = document.getElementById('btnSubmit');\n        const btnBack = document.getElementById('btnBackMediators');\n        const data = collectResponses();\n        setSubmitStatus('sending', I18N[currentLang].sendingWithWait);\n        if (btn) { btn.disabled = true; btn.textContent = I18N[currentLang].sending; }\n        if (btnBack) btnBack.disabled = true;\n        submitToGoogleSheets(data)\n          .then(function () {\n            showSection('thankyou');\n          })\n          .catch(function () {\n            setSubmitStatus('failed', `${I18N[currentLang].submissionFailed} <button type=\"button\" class=\"btn-nav btn-retry\" onclick=\"retrySubmit()\">${I18N[currentLang].retry}<\/button>`);\n            if (btn) { btn.disabled = false; btn.textContent = I18N[currentLang].submit; }\n            if (btnBack) btnBack.disabled = false;\n          });\n        return;\n      } else {\n        const idx = SECTIONS.indexOf(sectionId);\n        showSection(SECTIONS[idx + 1]);\n      }\n    }\n\n    function retrySubmit() {\n      validateAndNext('likert-mediators');\n    }\n\n    function updateProgress(sectionId) {\n      const progressWrap = document.getElementById('progressWrap');\n      const progressFill = document.getElementById('progressFill');\n      const progressText = document.getElementById('progressText');\n      const progressPercent = document.getElementById('progressPercent');\n      const ordered = ['screening', 'demographics', 'maxdiff1a', 'maxdiff1b', 'maxdiff1c', 'maxdiff2a', 'maxdiff2b', 'maxdiff2c', 'likert-npd', 'likert-mediators'];\n      const idx = ordered.indexOf(sectionId);\n\n      if (idx === -1) {\n        progressWrap.classList.remove('show');\n        return;\n      }\n\n      progressWrap.classList.add('show');\n      const step = idx + 1;\n      const total = ordered.length;\n      const percent = Math.round((step \/ total) * 100);\n      progressText.textContent = I18N[currentLang].stepText(step, total);\n      progressPercent.textContent = `${percent}%`;\n      progressFill.style.width = `${percent}%`;\n    }\n\n    document.querySelectorAll('.lang-btn').forEach(btn => {\n      btn.addEventListener('click', () => applyLanguage(btn.dataset.lang || 'en'));\n    });\n    const btnDownloadOverview = document.getElementById('btnDownloadOverview');\n    if (btnDownloadOverview) btnDownloadOverview.addEventListener('click', downloadResearchOverviewPdf);\n    applyLanguage('en');\n  <\/script>\n  <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/jspdf@2.5.1\/dist\/jspdf.umd.min.js\"><\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Questionnaire \u2014 Risk Management Culture and NPD Performance Step 1 of 6 0% \ud83c\uddec\ud83c\udde7 English \ud83c\uddf7\ud83c\uddfa \u0420\u0443\u0441\u0441\u043a\u0438\u0439 \ud83c\udde8\ud83c\uddf3 \u4e2d\u6587 Risk Management Culture and NPD Performance Welcome. This questionnaire is part of my current master&#8217;s thesis research. The study examines how risk management culture relates to new product development performance in companies. What is NPD? NPD means New Product Development, the process by which companies design, test, and launch new products or services. What is the Risk Awareness Index? It is an index based on your MaxDiff and scale responses, showing how risk-related factors are perceived and how strongly they are reflected in actual project practice. My name is Till Blania. I am a master student at HSE Saint Petersburg in the program International Business in International Markets. This survey is conducted for the master thesis I am currently writing. Data collection notice: Data will be collected and processed anonymously. No personal data are processed or stored in this questionnaire. Your responses will be anonymised and used only for academic purposes. Completing the survey takes approximately 10 minutes. Start now Download Research Overview (PDF) Screening Please answer the following to confirm eligibility for this study. 1. Does your company develop new products or services as part of its core business? * Yes No This answer is mandatory. 2. Is your company a small or medium-sized enterprise (fewer than 250 employees)? * (Larger companies can also continue.) Yes No This answer is mandatory. 3. Is your company in the tech industry? * (e.g. software, IT, electronics, engineering, medical devices) Yes No This answer is mandatory. 4. Do you agree that your anonymous questionnaire data may be used for this master&#8217;s thesis research? * Yes, I agree No, I do not agree This answer is mandatory. Thank you for your time. Unfortunately, this survey is not applicable if your company does not run NPD activities or if consent is not given. You may close this page. \u2190 Back Next \u2192 General Information Please provide some basic information about your company and your role. This helps us understand the context of your responses. Country * \u2014 Select \u2014RussiaChinaIndiaPakistanSouth Korea This answer is mandatory. Company size (employees) * (EU\/Russia definition: Micro &lt;15, Small 16\u2013100, Medium 101\u2013250, Large &gt;250) 1\u201315 (Micro) 16\u2013100 (Small) 101\u2013250 (Medium) Above 250 (Large) This answer is mandatory. Primary industry sector * Software IT services Electronics Engineering Medical devices Financial sector Social Media &amp; Communication Other If Other, please type your industry: This answer is mandatory when Other is selected. This answer is mandatory. Years in operation of your company * This answer is mandatory. NPD projects in the last 3 years * 0\u20132 3\u20135 6\u201310 11 or more This answer is mandatory. Job title or main role * This answer is mandatory. Years of experience in NPD or project management * This answer is mandatory. Dedicated risk management department or function? * Yes No This answer is mandatory. How familiar are you with the details of your company&#8217;s NPD projects? * Not familiar Somewhat familiar Familiar Very familiar Extremely familiar This answer is mandatory. What is your primary role in NPD? * Project Manager Team Member Senior Executive Marketing\/Sales R&amp;D\/Engineering Other If Other, please type your role: This answer is mandatory when Other is selected. This answer is mandatory. \u2190 Back Next \u2192 Part 1 \u2014 Perceived Importance (Block 1 of 3) ! How to use the grid: The factor text is in the first column. In the two columns to the right, mark one strongest and one weakest for this question (two different factors per set). What Part 1 is about: We ask what is most and least important for your company\u2019s NPD success \u2014 the factors you believe should matter when developing new products (your view of priority, not what happened last week). What you do: In each set of four factors, choose exactly one most important and exactly one least important for that success. How the task works: In every set, pick only one \u201cbest\u201d and one \u201cworst\u201d (two different items), then answer the short follow-up about those four factors. You may sometimes see the same statements again; this is intentional in MaxDiff. Repeating factors in different sets helps us measure which factors you consistently prefer. Why: This shows which risk areas your organisation treats as priorities, without asking you to rate every item separately. \u2190 Back Next \u2192 Part 1 \u2014 Perceived Importance (Block 2 of 3) ! How to use the grid: The factor text is in the first column. In the two columns to the right, mark one strongest and one weakest for this question (two different factors per set). Reminder: In Part 1, choose based on what should be most important for NPD success. Please continue with the next 5 MaxDiff sets. Select exactly one most important and one least important item in each set, then answer the anchor question. Seeing some statements more than once is normal in MaxDiff and part of the survey design. \u2190 Back Next \u2192 Part 1 \u2014 Perceived Importance (Block 3 of 3) ! How to use the grid: The factor text is in the first column. In the two columns to the right, mark one strongest and one weakest for this question (two different factors per set). Reminder: In Part 1, choose based on what should be most important for NPD success. This is the final block for Part 1. Please complete all 5 sets before continuing. Seeing some statements more than once is normal in MaxDiff and part of the survey design. \u2190 Back Next \u2192 Part 2 \u2014 Actual Influence (Block 1 of 3) ! How to use the grid: The factor text is in the first column. In the two columns to the right, mark one strongest and one weakest for this question (two different factors per set). What Part 2 is about: The same factors, but now about real practice \u2014 what actually influences decisions and behaviour in your NPD projects, not<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-2509","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.beraterium.de\/de\/wp-json\/wp\/v2\/pages\/2509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.beraterium.de\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.beraterium.de\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.beraterium.de\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.beraterium.de\/de\/wp-json\/wp\/v2\/comments?post=2509"}],"version-history":[{"count":88,"href":"https:\/\/www.beraterium.de\/de\/wp-json\/wp\/v2\/pages\/2509\/revisions"}],"predecessor-version":[{"id":2721,"href":"https:\/\/www.beraterium.de\/de\/wp-json\/wp\/v2\/pages\/2509\/revisions\/2721"}],"wp:attachment":[{"href":"https:\/\/www.beraterium.de\/de\/wp-json\/wp\/v2\/media?parent=2509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}