Changeset - 630bf4086135
[Not reviewed]
11 29 11
Joel Addison - 18 months ago 2022-12-07 14:08:54
joel@addison.net.au
Everything Open 2023 - Initial Setup
40 files changed:
Changeset was too big and was cut off... Show full diff anyway
0 comments (0 inline, 0 general)
.gitlab-ci.yml
Show inline comments
 
stages:
 
  - build
 
  - deploy
 

	
 
variables:
 
  DOCKER_TLS_CERTDIR: "/certs"
 
  CONTAINER_PREFIX: 2022
 
  CONTAINER_PREFIX: 2023
 
  CONTAINER_IMAGE: $CI_REGISTRY_IMAGE/$CONTAINER_PREFIX:$CI_COMMIT_SHA
 

	
 
build-image:
 
  image: docker:git
 
  stage: build
 
  services:
 
  - docker:dind
 
  script:
 
    - apk update && apk add git
 
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
 
    - docker build --pull -f docker/Dockerfile -t $CONTAINER_IMAGE .
 
    - docker push $CONTAINER_IMAGE
 
  only:
 
    - "2022"
 
    - conf/2023
 

	
 
k8s-deploy-staging:
 
  image: google/cloud-sdk
 
  stage: deploy
 
  script:
 
  - echo "${CA_CERT}" > cert.crt
 
  - kubectl config set-cluster cluster --server="${KUBE_SERVER}" --embed-certs=true --certificate-authority=cert.crt
 
  - kubectl config set-context cluster --cluster=cluster --namespace=lca2022-staging --user=gitlab-ci
 
  - kubectl config set-context cluster --cluster=cluster --namespace=eo2023-staging --user=gitlab-ci
 
  - kubectl config use-context cluster
 
  - kubectl --token "${KUBE_TOKEN}" set image deployment/symposion-app symposion-app=$CONTAINER_IMAGE
 
  when: manual
 
  only:
 
  - dev/2022
 
  - dev/2023
 
  environment:
 
    name: 2022/staging
 
    url: https://staging-lca2022.gc2020.org/
 
    name: 2023/staging
 
    url: https://staging-eo2023.osaconftools.net/
 

	
 
k8s-deploy-prod:
 
  image: google/cloud-sdk
 
  stage: deploy
 
  script:
 
  - echo "${CA_CERT}" > cert.crt
 
  - kubectl config set-cluster cluster --server="${KUBE_SERVER}" --embed-certs=true --certificate-authority=cert.crt
 
  - kubectl config set-context cluster --cluster=cluster --namespace=lca2022-prod --user=gitlab-ci
 
  - kubectl config set-context cluster --cluster=cluster --namespace=eo2023-prod --user=gitlab-ci
 
  - kubectl config use-context cluster
 
  - kubectl --token "${KUBE_TOKEN}" set image deployment/symposion-app symposion-app=$CONTAINER_IMAGE
 
  when: manual
 
  only:
 
  - "2022"
 
  - conf/2023
 
  environment:
 
    name: 2022/prod
 
    url: https://lca2022.linux.org.au
 
    name: 2023/prod
 
    url: https://2023.everythingopen.au/
 

	
 
.docs_template: &sphinx
 
  image: alpine
 
  script:
 
  - apk --no-cache add py3-pip python3-dev make
 
  - pip install sphinx
 
  - cd docs
 
  - make html
 
  - cd ..
 
  - mv docs/_build/html public
 
  artifacts:
 
    paths:
 
    - public
 

	
 
pages:
 
  <<: *sphinx
 
  stage: build
 
  only:
 
  - master
 
  - "2022"
 
  - conf/2023
 
  environment:
 
    name: docs
 
    url: https://laconfdev.gitlab.io/symposion_app/
 

	
 
build-sphinx:
 
  <<: *sphinx
 
  stage: build
 
  except:
 
  - master
 
  - "2022"
 
  - conf/2023
fixtures/2022/auth.permission.json
Show inline comments
 
deleted file
fixtures/2022/conference.section.json
Show inline comments
 
deleted file
fixtures/2022/proposals.proposalsection.json
Show inline comments
 
deleted file
fixtures/conference.json
Show inline comments
 
[
 
{
 
  "model": "symposion_conference.conference",
 
  "pk": 1,
 
  "fields": {
 
    "title": "linux.conf.au 2022",
 
    "start_date": "2022-01-14",
 
    "end_date": "2022-01-16",
 
    "timezone": "Australia/Canberra"
 
    "title": "Everything Open 2023",
 
    "start_date": "2023-03-14",
 
    "end_date": "2023-03-16",
 
    "timezone": "Australia/Melbourne"
 
  }
 
}
 
]
fixtures/flatpages.json
Show inline comments
 
[
 
{
 
  "model": "flatpages.flatpage",
 
  "pk": 1,
 
  "fields": {
 
    "url": "/",
 
    "title": "Home Page",
 
    "content": "Here is the home page for LCA.\r\n\r\nOther pages to come.",
 
    "content": "Here is the home page.\r\n\r\nOther pages to come.",
 
    "enable_comments": false,
 
    "template_name": "",
 
    "registration_required": false,
 
    "sites": [
 
      1
 
    ]
 
  }
 
}
 
]
fixtures/sessions/auth.group.json
Show inline comments
 
file renamed from fixtures/2022/auth.group.json to fixtures/sessions/auth.group.json
fixtures/sessions/auth.permission.json
Show inline comments
 
new file 100644
 
[
 
{
 
  "model": "auth.permission",
 
  "fields": {
 
    "name": "Can review Main Conference",
 
    "content_type": [
 
      "reviews",
 
      ""
 
    ],
 
    "codename": "can_review_main"
 
  }
 
},
 
{
 
  "model": "auth.permission",
 
  "fields": {
 
    "name": "Can manage Main Conference",
 
    "content_type": [
 
      "reviews",
 
      ""
 
    ],
 
    "codename": "can_manage_main"
 
  }
 
}
 
]
fixtures/sessions/conference.section.json
Show inline comments
 
new file 100644
 
[
 
{
 
  "model": "symposion_conference.section",
 
  "pk": 1,
 
  "fields": {
 
    "conference": 1,
 
    "name": "Main Conference",
 
    "slug": "main",
 
    "start_date": "2023-03-14",
 
    "end_date": "2023-03-16"
 
  }
 
}
 
]
fixtures/sessions/proposals.proposalkind.json
Show inline comments
 
file renamed from fixtures/2022/proposals.proposalkind.json to fixtures/sessions/proposals.proposalkind.json
 
[
 
{
 
  "model": "symposion_proposals.proposalkind",
 
  "pk": 1,
 
  "fields": {
 
    "section": 1,
 
    "name": "Talk",
 
    "slug": "talk"
 
  }
 
},
 
{
 
  "model": "symposion_proposals.proposalkind",
 
  "pk": 3,
 
  "pk": 2,
 
  "fields": {
 
    "section": 2,
 
    "name": "Miniconf",
 
    "slug": "miniconf"
 
    "section": 1,
 
    "name": "Tutorial",
 
    "slug": "tutorial"
 
  }
 
}
 
]
fixtures/sessions/proposals.proposalsection.json
Show inline comments
 
new file 100644
 
[
 
{
 
  "model": "symposion_proposals.proposalsection",
 
  "pk": 1,
 
  "fields": {
 
    "section": 1,
 
    "start": "2022-12-07T12:00:00Z",
 
    "end": "2023-01-09T12:00:00Z",
 
    "closed": false,
 
    "published": true
 
  }
 
}
 
]
fixtures/sessions/teams.team.json
Show inline comments
 
file renamed from fixtures/2022/teams.team.json to fixtures/sessions/teams.team.json
 
[
 
{
 
  "model": "teams.team",
 
  "pk": 1,
 
  "fields": {
 
    "slug": "main-proposals",
 
    "name": "linux.conf.au Sessions Team",
 
    "description": "Team looking after the linux.conf.au Call for Sessions",
 
    "name": "Sessions Team",
 
    "description": "Team looking after the Call for Sessions",
 
    "access": "invitation",
 
    "created": "2019-06-23T08:16:34.032Z",
 
    "permissions": [
 
      [
 
        "can_review_main",
 
        "reviews",
 
        ""
 
      ],
 
      [
 
        "can_review_miniconf",
 
        "reviews",
 
        ""
 
      ]
 
    ],
 
    "manager_permissions": [
 
      [
 
        "can_manage_main",
 
        "reviews",
 
        ""
 
      ],
 
      [
 
        "can_review_main",
 
        "reviews",
 
        ""
 
      ]
 
    ]
 
  }
 
},
 
{
 
  "model": "teams.team",
 
  "pk": 2,
 
  "fields": {
 
    "slug": "organising-team",
 
    "name": "linux.conf.au Organising Team",
 
    "description": "The organising team for linux.conf.au",
 
    "name": "Organising Team",
 
    "description": "The conference organising team",
 
    "access": "invitation",
 
    "created": "2019-08-26T22:59:09.265Z",
 
    "permissions": [
 
      [
 
        "can_review_main",
 
        "reviews",
 
        ""
 
      ],
 
      [
 
        "can_review_miniconf",
 
        "reviews",
 
        ""
 
      ]
 
    ],
 
    "manager_permissions": []
 
  }
 
}
 
]
fixtures/sites.json
Show inline comments
 
[
 
{
 
  "model": "sites.site",
 
  "pk": 1,
 
  "fields": {
 
    "domain": "lca2022.linux.org.au",
 
    "name": "linux.conf.au 2022"
 
    "domain": "2023.everythingopen.au",
 
    "name": "Everything Open 2023"
 
  }
 
}
 
]
fixtures/sitetree.json
Show inline comments
 
[
 
{
 
  "model": "sitetree.tree",
 
  "pk": 1,
 
  "fields": {
 
    "title": "main",
 
    "alias": "main"
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 1,
 
  "fields": {
 
    "title": "Home",
 
    "hint": "",
 
    "url": "/",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": null,
 
    "sort_order": 1,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 2,
 
  "fields": {
 
    "title": "About",
 
    "hint": "",
 
    "url": "#",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": null,
 
    "sort_order": 2,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 3,
 
  "fields": {
 
    "title": "Programme",
 
    "hint": "",
 
    "url": "#",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": null,
 
    "sort_order": 5,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 4,
 
  "fields": {
 
    "title": "Sponsors",
 
    "hint": "",
 
    "url": "/sponsors/",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": null,
 
    "sort_order": 8,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 5,
 
  "fields": {
 
    "title": "News",
 
    "hint": "",
 
    "url": "/news/",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": null,
 
    "sort_order": 3,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 6,
 
  "fields": {
 
    "title": "About LCA2022",
 
    "title": "About Everything Open",
 
    "hint": "",
 
    "url": "/about/",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": 2,
 
    "sort_order": 6,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 7,
 
  "fields": {
 
    "title": "Location",
 
    "hint": "",
 
    "url": "/about/location/",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": 2,
 
    "sort_order": 7,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 8,
 
  "fields": {
 
    "title": "Attend",
 
    "hint": "",
 
    "url": "#",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": null,
 
    "sort_order": 4,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 9,
 
  "fields": {
 
    "title": "Dashboard",
 
    "hint": "",
 
    "url": "/dashboard",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": 8,
 
    "sort_order": 9,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 10,
 
  "fields": {
 
    "title": "Code of Conduct",
 
    "hint": "",
 
    "url": "/attend/code-of-conduct/",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": 8,
 
    "sort_order": 22,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 11,
 
  "fields": {
 
    "title": "Terms and Conditions",
 
    "hint": "",
 
    "url": "/attend/terms-and-conditions/",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": 8,
 
    "sort_order": 23,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 12,
 
  "fields": {
 
    "title": "Overview",
 
    "hint": "",
 
    "url": "/programme/",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": 3,
 
    "sort_order": 12,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 13,
 
  "fields": {
 
    "title": "Miniconfs",
 
    "hint": "",
 
    "url": "/programme/miniconfs/",
 
    "urlaspattern": false,
 
    "tree": 1,
 
    "hidden": false,
 
    "alias": null,
 
    "description": "",
 
    "inmenu": true,
 
    "inbreadcrumbs": true,
 
    "insitetree": true,
 
    "access_loggedin": false,
 
    "access_guest": false,
 
    "access_restricted": false,
 
    "access_perm_type": 1,
 
    "parent": 3,
 
    "sort_order": 13,
 
    "access_permissions": []
 
  }
 
},
 
{
 
  "model": "sitetree.treeitem",
 
  "pk": 14,
 
  "fields": {
 
    "title": "Sessions",
k8s/deployment_template.jsonnet
Show inline comments
 
function (slug, sha) {
 

	
 
  local app = "symposion-app-" + slug,
 
  local namespace = "rego-review",
 
  local domain = slug + ".dev.lca2019.org",
 
  local tls_secret = slug + "-tls",
 

	
 
  "deployment.json":
 
    {
 
      "apiVersion": "v1",
 
      "items": [
 
        {
 
          "apiVersion": "v1",
 
          "kind": "Service",
 
          "metadata": {
 
            "labels": {
 
              "app":  app,
 
              "slug": slug
 
            },
 
            "name": app,
 
            "namespace": namespace
 
          },
 
          "spec": {
 
            "ports": [
 
              {
 
                "port": 8000,
 
                "protocol": "TCP",
 
                "targetPort": 8000
 
              }
 
            ],
 
            "selector": {
 
              "app": app,
 
              "slug": slug
 
            },
 
            "sessionAffinity": "None",
 
            "type": "ClusterIP"
 
          }
 
        },
 
        {
 
          "apiVersion": "extensions/v1beta1",
 
          "kind": "Deployment",
 
          "metadata": {
 
            "labels": {
 
              "app": app,
 
              "slug": slug,
 
            },
 
            "name": app,
 
            "namespace": namespace
 
          },
 
          "spec": {
 
            "replicas": 1,
 
            "revisionHistoryLimit": 1,
 
            "selector": {
 
              "matchLabels": {
 
                "app": app,
 
                "slug": slug
 
              }
 
            },
 
            "strategy": {
 
              "rollingUpdate": {
 
                "maxSurge": 1,
 
                "maxUnavailable": 1
 
              },
 
              "type": "RollingUpdate"
 
            },
 
            "template": {
 
              "metadata": {
 
                "labels": {
 
                  "app": app,
 
                  "slug": slug
 
                }
 
              },
 
              "spec": {
 
                "containers": [
 
                  {
 
                    "env": [
 
                      {
 
                        "name": "SYMPOSION_APP_DEBUG",
 
                        "value": "1"
 
                      },
 
                      {
 
                        "name": "DJANGO_SECRET_KEY",
 
                        "value": "paGhahQuain5ohYoh0moorai"
 
                      },
 
                      {
 
                        "name": "DATABASE_URL",
 
                        "value": "sqlite:////tmp/symposion.sqlite"
 
                      },
 
                      {
 
                        "name": "GCS_BUCKET",
 
                        "value": "CEA51A5-A613-4AEF-A9FB-D0A57D77C13B"
 
                      },
 
                      {
 
                        "name": "GOOGLE_APPLICATION_CREDENTIALS",
 
                        "value": "/dev/null"
 
                      },
 
                      {
 
                        "name": "STRIPE_PUBLIC_KEY",
 
                        "valueFrom": {
 
                          "secretKeyRef": {
 
                            "key": "STRIPE_PUBLIC_KEY",
 
                            "name": "symposion-app-config"
 
                          }
 
                        }
 
                      },
 
                      {
 
                        "name": "STRIPE_SECRET_KEY",
 
                        "valueFrom": {
 
                          "secretKeyRef": {
 
                            "key": "STRIPE_SECRET_KEY",
 
                            "name": "symposion-app-config"
 
                          }
 
                        }
 
                      },
 
                      {
 
                        "name": "SYMPOSION_DEV_MODE",
 
                        "value": "LAPTOP"
 
                      },
 
                      {
 
                        "name": "ANALYTICS_KEY",
 
                        "value": "UA-000000000-1"
 
                      }
 
                    ],
 
                    "image": "asia.gcr.io/linuxconfsydney/symposion_app_2022_dev:" + sha,
 
                    "image": "registry.gitlab.com/laconfdev/symposion_app/2023:" + sha,
 
                    "imagePullPolicy": "Always",
 
                    "livenessProbe": {
 
                      "failureThreshold": 3,
 
                      "httpGet": {
 
                        "path": "/admin/login/",
 
                        "port": 8000,
 
                        "scheme": "HTTP"
 
                      },
 
                      "initialDelaySeconds": 180,
 
                      "periodSeconds": 10,
 
                      "successThreshold": 1,
 
                      "timeoutSeconds": 5
 
                    },
 
                    "name": app,
 
                    "ports": [
 
                      {
 
                        "containerPort": 8000,
 
                        "protocol": "TCP"
 
                      }
 
                    ],
 
                    "resources": {},
 
                    "terminationMessagePath": "/dev/termination-log",
 
                    "terminationMessagePolicy": "File"
 
                  }
 
                ],
 
                "dnsPolicy": "ClusterFirst",
 
                "restartPolicy": "Always",
 
                "schedulerName": "default-scheduler",
 
                "securityContext": {},
 
                "terminationGracePeriodSeconds": 30
 
              }
 
            }
 
          }
 
        }
 
      ],
 
      "kind": "List"
 
    },
 
  "ingress.json":
 
    {
 
        "kind": "Ingress",
 
        "apiVersion": "extensions/v1beta1",
 
        "metadata": {
 
            "name": app,
 
            "namespace": namespace,
 
            "annotations": {
 
                "kubernetes.io/ingress.class": "nginx-review",
 
            }
 
        },
 
        "spec": {
 
            "backend": {
 
                "serviceName": app,
 
                "servicePort": 80
 
            },
 
            "tls": [
 
                {
 
                    "hosts": [
 
                        domain
 
                    ],
 
                    "secretName": tls_secret,
 
                }
 
            ],
 
            "rules": [
 
                {
 
                    "host": domain,
 
                    "http": {
 
                        "paths": [
 
                            {
 
                                "path": "/",
 
                                "backend": {
 
                                    "serviceName": app,
 
                                    "servicePort": 8000
 
                                }
 
                            }
 
                        ]
 
                    }
 
                }
 
            ]
 
        }
 
    },
 
  "certificate.json":
 
    {
 
      "apiVersion": "certmanager.k8s.io/v1alpha1",
 
      "kind": "Certificate",
 
      "metadata": {
 
        "name": slug,
 
        "namespace": "rego-review",
 
      },
 
      "spec": {
 
        "acme": {
 
          "config": [
 
            {
 
              "domains": [
 
                domain
 
                    ],
 
              "http01": {
 
                      "ingressClass": "nginx-review"
 
                    }
 
                }
 
            ]
 
        },
 
        "commonName": "",
 
        "dnsNames": [
 
            domain
 
        ],
 
        "issuerRef": {
 
            "kind": "ClusterIssuer",
 
            "name": "letsencrypt-prod"
 
        },
 
        "secretName": tls_secret
 
      }
 
    }
 
}
make_dev_container.sh
Show inline comments
 
#!/bin/bash -x
 

	
 
IMAGE_NAME=${1:-symposion_app}
 

	
 
if [ -e ./symposion-tools ]; then
 
    pushd ./symposion-tools
 
    ./save_db_from_docker.sh
 
    popd
 
fi
 

	
 
# Check for docker running
 
if ! docker info >/dev/null 2>&1; then
 
    echo "Docker does not seem to be running. Please start it and retry."
 
    exit 1
 
fi
 

	
 
docker image build -f docker/Dockerfile -t ${IMAGE_NAME} --target symposion_dev .
 
docker container stop symposion
 
docker container rm symposion
 
docker container create --env-file docker/laptop-mode-env -p 28000:8000 -v $(pwd):/app/symposion_app --name symposion ${IMAGE_NAME}
 
docker container start symposion
 
## When we started the container and mounted . into /app/symposion_app, it hides the static/build directory
 
## As a kludge, re-run collectstatic to recreate it
 
## Possible alternative here: don't mount all of ., just mount the bits that we'd live to have update live
 
docker exec symposion ./manage.py collectstatic --noinput -v 0
 
docker exec symposion ./manage.py migrate
 
docker exec symposion ./manage.py loaddata ./fixtures/{conference,sites,sitetree,flatpages}.json
 
docker exec symposion ./manage.py create_review_permissions
 
docker exec symposion ./manage.py loaddata ./fixtures/????/*.json
 
docker exec symposion ./manage.py loaddata ./fixtures/sessions/*.json
 
docker exec symposion ./manage.py populate_inventory
 

	
 
if [ -e ./symposion-tools ]; then
 
    pushd ./symposion-tools
 
    ./fixture_to_docker.sh fixtures/dev_dummy_superuser.json
 
    ./fixture_to_docker.sh fixtures/????_*.json
 
    popd
 
else
 
    echo Now creating a Django superuser. Please enter a
 
    docker exec -it symposion ./manage.py createsuperuser --username admin1 --email root@example.com
 
fi
 

	
 
set +x
 
echo "Now you can log into http://localhost:28000/admin"
 
echo "Username: admin1      Password: the one you just typed twice"
 
echo "If you need to test as a non-admin user, create one at"
 
echo "http://localhost:28000/admin/auth/user/add/ - then log out"
 
echo "and log back in at http://localhost:28000"
pinaxcon/proposals/admin.py
Show inline comments
 
from django.contrib import admin
 

	
 
from pinaxcon.proposals import models
 
from symposion.proposals import models as symposion_models
 
from symposion.reviews.models import ProposalResult
 

	
 
class CategoryAdmin(admin.ModelAdmin):
 

	
 
    class AdditionalSpeakerInline(admin.TabularInline):
 
        model = symposion_models.AdditionalSpeaker
 

	
 
    class ProposalResultInline(admin.TabularInline):
 
        model = ProposalResult
 
        readonly_fields = ["score"]
 
        fields = ["status"]
 

	
 
    inlines = [
 
        AdditionalSpeakerInline,
 
        ProposalResultInline,
 
    ]
 

	
 

	
 
models_to_register = [
 
    models.TalkProposal,
 
    models.TutorialProposal,
 
    models.MiniconfProposal,
 
    ### LCA2022 Miniconfs
 
    models.GlamCommunityProposal,
 
    models.KernelProposal,
 
    models.OpenHardwareProposal,
 
    models.SysAdminProposal,
 
]
 

	
 
for model in models_to_register:
 
    admin.site.register(model, CategoryAdmin,
 
                        list_display = [
 
                            "id",
 
                            "title",
 
                            "speaker",
 
                            "speaker_email",
 
                            "kind",
 
                            "target_audience",
 
                            "status",
 
                            "cancelled",
 
                        ],
 
                        list_filter = [
 
                            "result__status",
 
                            "cancelled",
 
                        ],
 
    )
 

	
pinaxcon/proposals/forms.py
Show inline comments
 
import copy
 

	
 
from django import forms
 

	
 
from pinaxcon.proposals.fields import HelpTextField
 
from pinaxcon.proposals import models
 

	
 

	
 
DEFAULT_FIELDS =  [
 
    "title",
 
    "primary_topic",
 
    "target_audience",
 
    "experience_level",
 
    "abstract",
 
    "private_abstract",
 
    "content_warning",
 
    "technical_requirements",
 
    "project",
 
    "project_url",
 
    "video_url",
 
    "require_approval",
 
    "recording_release",
 
    "materials_release",
 
]
 

	
 
MINICONF_SESSION_FORMAT_FIELDS = copy.copy(DEFAULT_FIELDS)
 

	
 
class ProposalForm(forms.ModelForm):
 

	
 
    required_css_class = 'label-required'
 

	
 
    def clean_description(self):
 
        value = self.cleaned_data["description"]
 
        if len(value) > 400:
 
            raise forms.ValidationError(
 
                u"The description must be less than 400 characters"
 
            )
 
        return value
 

	
 

	
 
class TalkProposalForm(ProposalForm):
 

	
 
    class Meta:
 
        model = models.TalkProposal
 
        fields = copy.copy(DEFAULT_FIELDS)
 

	
 

	
 
class TutorialProposalForm(ProposalForm):
 

	
 
    class Meta:
 
        model = models.TutorialProposal
 
        fields = copy.copy(DEFAULT_FIELDS)
 

	
 

	
 
class MiniconfProposalForm(ProposalForm):
 

	
 
    class Meta:
 
        model = models.MiniconfProposal
 
        fields = [
 
            "title",
 
            "abstract",
 
            "private_abstract",
 
            "technical_requirements",
 
            "recording_release",
 
            "materials_release",
 
        ]
 

	
 
### LCA2022 Miniconfs
 

	
 
class MiniconfSessionProposalForm(ProposalForm):
 
    pass
 

	
 

	
 
class GlamCommunityProposalForm(MiniconfSessionProposalForm):
 

	
 
    class Meta:
 
        model = models.GlamCommunityProposal
 
        fields = MINICONF_SESSION_FORMAT_FIELDS
 

	
 

	
 
class KernelProposalForm(MiniconfSessionProposalForm):
 

	
 
    class Meta:
 
        model = models.KernelProposal
 
        fields = MINICONF_SESSION_FORMAT_FIELDS
 

	
 

	
 
HARDWARE_FIELDS = copy.copy(MINICONF_SESSION_FORMAT_FIELDS)
 
HARDWARE_FIELDS.insert(4, "talk_format")
 

	
 
class OpenHardwareProposalForm(MiniconfSessionProposalForm):
 

	
 
    def __init__(self, *a, **k):
 
        super(OpenHardwareProposalForm, self).__init__(*a, **k)
 
        self.fields['talk_format'].required = True
 

	
 
    class Meta:
 
        model = models.OpenHardwareProposal
 
        fields = HARDWARE_FIELDS
 

	
 

	
 
class SysAdminProposalForm(MiniconfSessionProposalForm):
 

	
 
    class Meta:
 
        model = models.SysAdminProposal
 
        fields = MINICONF_SESSION_FORMAT_FIELDS
pinaxcon/proposals/migrations/0004_auto_20210809_2026.py
Show inline comments
 
deleted file
pinaxcon/proposals/migrations/0004_auto_20221208_0102.py
Show inline comments
 
new file 100644
 
# Generated by Django 2.2.28 on 2022-12-07 14:02
 

	
 
from django.db import migrations, models
 

	
 

	
 
class Migration(migrations.Migration):
 

	
 
    dependencies = [
 
        ('symposion_schedule', '0008_auto_20190122_0815'),
 
        ('symposion_reviews', '0001_initial'),
 
        ('symposion_proposals', '0003_auto_20170702_2250'),
 
        ('proposals', '0003_auto_20170702_2227'),
 
    ]
 

	
 
    operations = [
 
        migrations.AddField(
 
            model_name='talkproposal',
 
            name='content_warning',
 
            field=models.TextField(blank=True, help_text='This will be shown on the schedule to give attendees advanced warning of topics covered in the session. ', verbose_name='Content Warning'),
 
        ),
 
        migrations.AddField(
 
            model_name='talkproposal',
 
            name='content_warning_html',
 
            field=models.TextField(blank=True),
 
        ),
 
        migrations.AddField(
 
            model_name='talkproposal',
 
            name='experience_level',
 
            field=models.IntegerField(choices=[(1, 'Beginner'), (2, 'Intermediate'), (3, 'Advanced')], help_text='What level of experience will your session be pitched at?'),
 
        ),
 
        migrations.AddField(
 
            model_name='talkproposal',
 
            name='primary_topic',
 
            field=models.IntegerField(choices=[(1, 'Linux'), (2, 'Software'), (3, 'Hardware'), (4, 'Firmware'), (5, 'System Administration / Operations'), (6, 'Security'), (7, 'Documentation'), (8, 'Community'), (9, 'Science & Data'), (10, 'Galleries, Libraries, Archives & Museums (GLAM)'), (11, 'Multimedia'), (12, 'Aerospace / UAV'), (13, 'Agriculture'), (14, 'Other')], help_text='What is the primary topic area for your session?'),
 
        ),
 
        migrations.AddField(
 
            model_name='talkproposal',
 
            name='require_approval',
 
            field=models.BooleanField(default=False, help_text='Do you require further approval from your employer or institution before you can confirm your availability to present?'),
 
        ),
 
        migrations.AddField(
 
            model_name='tutorialproposal',
 
            name='content_warning',
 
            field=models.TextField(blank=True, help_text='This will be shown on the schedule to give attendees advanced warning of topics covered in the session. ', verbose_name='Content Warning'),
 
        ),
 
        migrations.AddField(
 
            model_name='tutorialproposal',
 
            name='content_warning_html',
 
            field=models.TextField(blank=True),
 
        ),
 
        migrations.AddField(
 
            model_name='tutorialproposal',
 
            name='experience_level',
 
            field=models.IntegerField(choices=[(1, 'Beginner'), (2, 'Intermediate'), (3, 'Advanced')], help_text='What level of experience will your session be pitched at?'),
 
        ),
 
        migrations.AddField(
 
            model_name='tutorialproposal',
 
            name='primary_topic',
 
            field=models.IntegerField(choices=[(1, 'Linux'), (2, 'Software'), (3, 'Hardware'), (4, 'Firmware'), (5, 'System Administration / Operations'), (6, 'Security'), (7, 'Documentation'), (8, 'Community'), (9, 'Science & Data'), (10, 'Galleries, Libraries, Archives & Museums (GLAM)'), (11, 'Multimedia'), (12, 'Aerospace / UAV'), (13, 'Agriculture'), (14, 'Other')], help_text='What is the primary topic area for your session?'),
 
        ),
 
        migrations.AddField(
 
            model_name='tutorialproposal',
 
            name='require_approval',
 
            field=models.BooleanField(default=False, help_text='Do you require further approval from your employer or institution before you can confirm your availability to present?'),
 
        ),
 
        migrations.AlterField(
 
            model_name='talkproposal',
 
            name='recording_release',
 
            field=models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, on YouTube under the standard YouTube licence, and on other platforms under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/'> CC BY-NC-SA 4.0</a>) licence."),
 
        ),
 
        migrations.AlterField(
 
            model_name='talkproposal',
 
            name='target_audience',
 
            field=models.IntegerField(choices=[(4, 'Developer'), (3, 'Community'), (1, 'End User'), (2, 'Business')], help_text='Who is the target audience for your session?'),
 
        ),
 
        migrations.AlterField(
 
            model_name='tutorialproposal',
 
            name='recording_release',
 
            field=models.BooleanField(default=True, help_text="I allow Linux Australia to release any recordings of presentations covered by this proposal, on YouTube under the standard YouTube licence, and on other platforms under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/'> CC BY-NC-SA 4.0</a>) licence."),
 
        ),
 
        migrations.AlterField(
 
            model_name='tutorialproposal',
 
            name='target_audience',
 
            field=models.IntegerField(choices=[(4, 'Developer'), (3, 'Community'), (1, 'End User'), (2, 'Business')], help_text='Who is the target audience for your session?'),
 
        ),
 
        migrations.DeleteModel(
 
            name='MiniconfProposal',
 
        ),
 
    ]
pinaxcon/proposals/models.py
Show inline comments
 
from django.db import models
 
from django.utils.translation import ugettext_lazy as _
 

	
 
from symposion.proposals.models import ProposalBase
 
from symposion.text_parser import parse
 

	
 

	
 
class Proposal(ProposalBase):
 

	
 
    TARGET_USER = 1
 
    TARGET_BUSINESS = 2
 
    TARGET_COMMUNITY = 3
 
    TARGET_DEVELOPER = 4
 

	
 
    TARGET_AUDIENCES = [
 
        (TARGET_DEVELOPER, "Developer"),
 
        (TARGET_COMMUNITY, "Community"),
 
        (TARGET_USER, "End User"),
 
        (TARGET_BUSINESS, "Business"),
 
    ]
 

	
 
    TOPIC_LINUX = 1
 
    TOPIC_SOFTWARE = 2
 
    TOPIC_HARDWARE = 3
 
    TOPIC_FIRMWARE = 4
 
    TOPIC_SYSADMIN = 5
 
    TOPIC_SECURITY = 6
 
    TOPIC_DOCUMENTATION = 7
 
    TOPIC_COMMUNITY = 8
 
    TOPIC_SCIENCE = 9
 
    TOPIC_GLAM = 10
 
    TOPIC_MULTIMEDIA = 11
 
    TOPIC_AEROSPACE = 12
 
    TOPIC_AGRICULTURE = 13
 
    TOPIC_OTHER = 14
 

	
 
    PROPOSAL_TOPIC = [
 
        (TOPIC_LINUX, "Linux"),
 
        (TOPIC_SOFTWARE, "Software"),
 
        (TOPIC_HARDWARE, "Hardware"),
 
        (TOPIC_FIRMWARE, "Firmware"),
 
        (TOPIC_SYSADMIN, "System Administration / Operations"),
 
        (TOPIC_SECURITY, "Security"),
 
        (TOPIC_DOCUMENTATION, "Documentation"),
 
        (TOPIC_COMMUNITY, "Community"),
 
        (TOPIC_SCIENCE, "Science & Data"),
 
        (TOPIC_GLAM, "Galleries, Libraries, Archives & Museums (GLAM)"),
 
        (TOPIC_MULTIMEDIA, "Multimedia"),
 
        (TOPIC_AEROSPACE, "Aerospace / UAV"),
 
        (TOPIC_AGRICULTURE, "Agriculture"),
 
        (TOPIC_OTHER, "Other"),
 
    ]
 

	
 
    LEVEL_BEGINNER = 1
 
    LEVEL_INTERMEDIATE = 2
 
    LEVEL_ADVANCED = 3
 

	
 
    EXPERIENCE_LEVEL = [
 
        (LEVEL_BEGINNER, "Beginner"),
 
        (LEVEL_INTERMEDIATE, "Intermediate"),
 
        (LEVEL_ADVANCED, "Advanced"),
 
    ]
 

	
 
    target_audience = models.IntegerField(
 
        choices=TARGET_AUDIENCES,
 
        help_text="Who is the target audience for your session?",
 
    )
 

	
 
    recording_release = models.BooleanField(
 
        default=True,
 
        help_text="I allow Linux Australia to release any recordings of "
 
        "presentations covered by this proposal, on YouTube under the "
 
        "standard YouTube licence, and on other platforms under the "
 
        "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International "
 
        "(<a href='https://creativecommons.org/licenses/by-nc-sa/4.0/'> "
 
        "CC BY-NC-SA 4.0</a>) licence."
 
    )
 

	
 
    materials_release = models.BooleanField(
 
        default=True,
 
        help_text="I allow Linux Australia to release any other material "
 
        "(such as slides) from presentations covered by this proposal, under "
 
        "the <a "
 
        "href='https://creativecommons.org/licenses/by-sa/3.0/au/deed.en'> "
 
        "Creative Commons Attribution-Share Alike Australia 3.0 Licence</a>"
 
    )
 

	
 
    class Meta:
 
        abstract = True
 

	
 

	
 
class SessionProposal(Proposal):
 
    """
 
    Base Session Proposal
 

	
 
    This is not a meta class as we want a single table to store the common
 
    data across all session proposal types.
 
    """
 

	
 
    TOPIC_SOFTWARE = 1
 
    TOPIC_HARDWARE = 2
 
    TOPIC_FIRMWARE = 3
 
    TOPIC_KERNEL = 4
 
    TOPIC_DOCUMENTATION = 5
 
    TOPIC_COMMUNITY = 6
 
    TOPIC_SECURITY = 7
 
    TOPIC_OPERATIONS = 8
 
    TOPIC_OTHER = 9
 

	
 
    PROPOSAL_TOPIC = [
 
        (TOPIC_SOFTWARE, "Software"),
 
        (TOPIC_HARDWARE, "Hardware"),
 
        (TOPIC_FIRMWARE, "Firmware"),
 
        (TOPIC_KERNEL, "Linux Kernel"),
 
        (TOPIC_DOCUMENTATION, "Documentation"),
 
        (TOPIC_COMMUNITY, "Community"),
 
        (TOPIC_SECURITY, "Security"),
 
        (TOPIC_OPERATIONS, "Deployment & Operations"),
 
        (TOPIC_OTHER, "Other"),
 
    ]
 

	
 
    LEVEL_BEGINNER = 1
 
    LEVEL_INTERMEDIATE = 2
 
    LEVEL_ADVANCED = 3
 

	
 
    EXPERIENCE_LEVEL = [
 
        (LEVEL_BEGINNER, "Beginner"),
 
        (LEVEL_INTERMEDIATE, "Intermediate"),
 
        (LEVEL_ADVANCED, "Advanced"),
 
    ]
 

	
 
    primary_topic = models.IntegerField(
 
        choices=PROPOSAL_TOPIC,
 
        help_text="What is the primary topic area for your session?"
 
    )
 

	
 
    experience_level = models.IntegerField(
 
        choices=EXPERIENCE_LEVEL,
 
        help_text="What level of experience will your session be pitched at?"
 
    )
 

	
 
    require_approval = models.BooleanField(
 
        default=False,
 
        help_text="Do you require further approval from your employer or "
 
        "institution before you can confirm your availability to present?"
 
    )
 

	
 

	
 
class TalkProposal(SessionProposal):
 

	
 
    class Meta:
 
        verbose_name = "talk proposal"
 

	
 

	
 
class TutorialProposal(SessionProposal):
 

	
 
    class Meta:
 
        verbose_name = "tutorial proposal"
 

	
 

	
 
class MiniconfProposal(Proposal):
 
    """
 
    Miniconf Proposal
 

	
 
    Note that this is just a Proposal, not a SessionProposal, as it does not
 
    require a number of fields that the others use.
 
    """
 

	
 
    target_audience = models.IntegerField(choices=Proposal.TARGET_AUDIENCES,
 
                                          default=Proposal.TARGET_DEVELOPER)
 

	
 
    class Meta:
 
        verbose_name = "miniconf proposal"
 

	
 

	
 
class MiniconfSessionProposal(SessionProposal):
 
    """
 
    Base Miniconf Session Proposal
 
    """
 
    content_warning = models.TextField(
 
        "Content Warning",
 
        help_text=_("This will be shown on the schedule to give attendees "
 
                    "advanced warning of topics covered in the session. "),
 
        blank=True,
 
    )
 
    content_warning_html = models.TextField(blank=True)
 

	
 
    class Meta:
 
        abstract = True
 

	
 
    def save(self, *args, **kwargs):
 
        self.content_warning_html = parse(self.content_warning)
 
        return super(Proposal, self).save(*args, **kwargs)
 

	
 
class GlamCommunityProposal(MiniconfSessionProposal):
 

	
 
    class Meta:
 
        verbose_name = "GO GLAM Miniconf Proposal"
 

	
 

	
 
class KernelProposal(MiniconfSessionProposal):
 

	
 
    class Meta:
 
        verbose_name = "Kernel Miniconf Proposal"
 

	
 

	
 
class OpenHardwareProposal(MiniconfSessionProposal):
 

	
 
    FORMAT_PRESENTATION = 1
 
    FORMAT_TUTORIAL = 2
 
    FORMAT_HANDS_ON = 3
 

	
 
    TALK_FORMATS = [
 
        (FORMAT_PRESENTATION, "Presentation"),
 
        (FORMAT_TUTORIAL, "Tutorial"),
 
        (FORMAT_HANDS_ON, "Hands-on"),
 
    ]
 

	
 
    talk_format = models.IntegerField(
 
        choices=TALK_FORMATS,
 
        default=FORMAT_PRESENTATION,
 
        help_text="Will your session be a presentation, tutorial or hands-on "
 
        "(e.g how to use KiCAD or some other tooling)?"
 
    )
 
class TalkProposal(Proposal):
 

	
 
    class Meta:
 
        verbose_name = "Open Hardware Miniconf Proposal"
 
        verbose_name = "talk proposal"
 

	
 

	
 
class SysAdminProposal(MiniconfSessionProposal):
 
class TutorialProposal(Proposal):
 

	
 
    class Meta:
 
        verbose_name = "System Administration Miniconf Proposal"
 
        verbose_name = "tutorial proposal"
pinaxcon/registrasion/forms.py
Show inline comments
 
from pinaxcon.registrasion import models
 

	
 
from django import forms
 

	
 

	
 
class YesNoField(forms.TypedChoiceField):
 

	
 
    def __init__(self, *args, **kwargs):
 
        kwargs['required'] = True
 
        super(YesNoField, self).__init__(
 
            *args,
 
            coerce=lambda x: x in ['True', 'Yes', True],
 
            choices=((None, '--------'), (False, 'No'), (True, 'Yes')),
 
            **kwargs
 
        )
 

	
 

	
 
class ProfileForm(forms.ModelForm):
 
    ''' A form for requesting badge and profile information. '''
 

	
 
    required_css_class = 'label-required'
 

	
 
    class Meta:
 
        model = models.AttendeeProfile
 
        exclude = [
 
            'attendee',
 
            'children',
 
            'lca_announce',
 
            'lca_chat',
 
            'future_conference',
 
        ]
 
        widgets = {
 
            'past_lca': forms.widgets.CheckboxSelectMultiple
 
        }
 
        field_classes = {
 
            "of_legal_age": YesNoField,
 
        }
pinaxcon/registrasion/management/commands/populate_inventory.py
Show inline comments
 
from collections import namedtuple
 
from datetime import timedelta
 
from decimal import Decimal
 
from django.conf import settings
 
from django.contrib.auth.models import Group
 
from django.core.exceptions import ObjectDoesNotExist
 
from django.core.management.base import BaseCommand
 

	
 
from registrasion.models import inventory as inv
 
from registrasion.models import conditions as cond
 
from symposion import proposals
 

	
 

	
 
class Command(BaseCommand):
 
    help = 'Populates the tickets and product inventory models'
 
    count = 0
 

	
 
    def add_arguments(self, parser):
 
        pass
 

	
 
    def handle(self, *args, **options):
 

	
 
        kinds = []
 
        for i in settings.MAIN_CONFERENCE_PROPOSAL_KINDS:
 
            kinds.append(proposals.models.ProposalKind.objects.get(name=i))
 
        self.main_conference_proposals = kinds
 

	
 
        self.populate_groups()
 
        self.populate_inventory()
 
        self.populate_restrictions()
 
        self.populate_discounts()
 

	
 
    def populate_groups(self):
 
        self.group_team = self.find_or_make(
 
            Group,
 
            ("name", ),
 
            name="Conference organisers",
 
        )
 
        self.group_volunteers = self.find_or_make(
 
            Group,
 
            ("name", ),
 
            name="Conference volunteers",
 
        )
 
        self.group_unpublish = self.find_or_make(
 
            Group,
 
            ("name", ),
 
            name="Can see unpublished products",
 
        )
 
        self.group_prepurchase = self.find_or_make(
 
            Group,
 
            ("name", ),
 
            name="Pre-purchase",
 
        )
 

	
 
    def populate_inventory(self):
 
        # Categories
 

	
 
        self.ticket = self.find_or_make(
 
            inv.Category,
 
            ("name",),
 
            name="Ticket",
 
            description="Each type of ticket has different included products. "
 
                        "For details of what products are included, see our "
 
                        "<a href=\"/attend/tickets/\">registration page</a>.",
 
            required=True,
 
            render_type=inv.Category.RENDER_TYPE_RADIO,
 
            limit_per_user=1,
 
            order=1,
 
        )
 
        self.terms = self.find_or_make(
 
            inv.Category,
 
            ("name",),
 
            name="Terms, Conditions, and Code of Conduct Acceptance",
 
            description="I agree to the "
 
                        "<a href=\"/attend/terms-and-conditions/\"> "
 
                        "terms and conditions of attendance</a>, and I have read, "
 
                        "understood, and agree to act according to the standards set "
 
                        "forth in our <a href=\"/attend/code-of-conduct/\">"
 
                        "Code of Conduct</a>.",
 
            required=True,
 
            render_type=inv.Category.RENDER_TYPE_CHECKBOX,
 
            order=10,
 
        )
 
        # self.penguin_dinner = self.find_or_make(
 
        #     inv.Category,
 
        #     ("name",),
 
        #     name="Penguin Dinner Ticket",
 
        #     description="Tickets to our conference dinner on the evening of "
 
        #                 f"{settings.PENGUIN_DINNER_TICKET_DATE: %A %d %B}. "
 
        #                 "All attendees may purchase "
 
        #                 "seats at the dinner, even if a dinner ticket is not "
 
        #                 "included in your conference ticket price.",
 
        #     required=False,
 
        #     render_type=inv.Category.RENDER_TYPE_QUANTITY,
 
        #     limit_per_user=10,
 
        #     order=20,
 
        # )
 
        # self.speakers_dinner_ticket = self.find_or_make(
 
        #     inv.Category,
 
        #     ("name",),
 
        #     name="Speakers' Dinner Ticket",
 
        #     description="Tickets to our exclusive Speakers' Dinner on the "
 
        #                 "evening of "
 
        #                 f"{settings.SPEAKER_DINNER_TICKET_DATE: %A %d %B}.",
 
        #     required=False,
 
        #     render_type=inv.Category.RENDER_TYPE_QUANTITY,
 
        #     limit_per_user=1,
 
        #     order=30,
 
        # )
 
        # self.pdns_category = self.find_or_make(
 
        #     inv.Category,
 
        #     ("name",),
 
        #     name="Professional Delegates Networking Session Ticket",
 
        #     description="Tickets to our Professional Delegates Networking session. "
 
        #                 "This event will be held on the evening of "
 
        #                 f"{settings.PDNS_TICKET_DATE: %A %d %B} "
 
        #                 "and is restricted to Professional Ticket "
 
        #                 "holders, speakers, miniconf organisers, and invited "
 
        #                 "guests.",
 
        #     required=False,
 
        #     render_type=inv.Category.RENDER_TYPE_RADIO,
 
        #     limit_per_user=1,
 
        #     order=40,
 
        # )
 
        # self.t_shirt = self.find_or_make(
 
        #     inv.Category,
 
        #     ("name",),
 
        #     name="Shirt",
 
        #     description="Commemorative conference shirts, featuring the "
 
        #                 f"linux.conf.au {settings.LCA_START.year} artwork. "
 
        #                 f"linux.conf.au {settings.CONF_START.year} artwork. "
 
        #                 "View the <a href=\"/attend/shirts/\">"
 
        #                 "sizing guide</a>.",
 
        #     required=False,
 
        #     render_type=inv.Category.RENDER_TYPE_ITEM_QUANTITY,
 
        #     order=50,
 
        # )
 
        # self.accommodation = self.find_or_make(
 
        #     inv.Category,
 
        #     ("name",),
 
        #     name="Accommodation at University of Tasmania",
 
        #     description="Accommodation at the University of Tasmania colleges "
 
        #                 "and apartments. You can come back and book your "
 
        #                 "accommodation at a later date, provided rooms remain "
 
        #                 "available. Rooms may only be booked from Sunday 15 "
 
        #                 "January--Saturday 21 January. If you wish to stay "
 
        #                 "for only a part of the 6-day period, you must book "
 
        #                 "accommodation for the full 6-day period. Rooms at "
 
        #                 "other hotels, including Wrest Point can be booked "
 
        #                 "elsewhere. For full details, see [LINK]our "
 
        #                 "accommodation page.[/LINK]",
 
        #     required=False,
 
        #     render_type=inv.Category.RENDER_TYPE_RADIO,
 
        #     limit_per_user=1,
 
        #     order=50,
 
        # )
 
        self.badge_category = self.find_or_make(
 
            inv.Category,
 
            ("name",),
 
            name="Swag Badge",
 
            description="We have a limited number of "
 
                        "<a href=\"/attend/shirts/\">Swag Badges</a> available "
 
                        f"for attendees of {settings.CONFERENCE_NAME}. "
 
                        "They will be allocated on a first come, first serve basis. "
 
                        "Please note that they are only available to Australian "
 
                        "attendees due to shipping limitations.",
 
            required=False,
 
            render_type=inv.Category.RENDER_TYPE_CHECKBOX,
 
            order=50,
 
        )
 
        self.extras = self.find_or_make(
 
            inv.Category,
 
            ("name",),
 
            name="Extras",
 
            description="Other items that can improve your conference "
 
                        "experience.",
 
            required=False,
 
            render_type=inv.Category.RENDER_TYPE_QUANTITY,
 
            order=60,
 
        )
 

	
 
        # Tickets
 

	
 
        self.ticket_contributor = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name=settings.CONTRIBUTOR.name,
 
            price=settings.CONTRIBUTOR.regular_price,
 
            reservation_duration=hours(24),
 
            order=1,
 
        )
 
        self.ticket_professional = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name=settings.PROFESSIONAL.name,
 
            price=settings.PROFESSIONAL.regular_price,
 
            reservation_duration=hours(24),
 
            order=10,
 
        )
 
        self.ticket_hobbyist = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name=settings.HOBBYIST.name,
 
            price=settings.HOBBYIST.regular_price,
 
            reservation_duration=hours(24),
 
            order=20,
 
        )
 
        self.ticket_student = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name=settings.STUDENT.name,
 
            price=settings.STUDENT.regular_price,
 
            reservation_duration=hours(24),
 
            order=30,
 
        )
 
        self.ticket_miniconf_only = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name=settings.MINICONF_ONLY.name,
 
            price=settings.MINICONF_ONLY.regular_price,
 
            reservation_duration=hours(24),
 
            order=40,
 
        )
 
        self.ticket_speaker = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name=settings.SPEAKER.name,
 
            price=settings.SPEAKER.regular_price,
 
            reservation_duration=hours(24),
 
            order=50,
 
        )
 
        self.ticket_media = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name=settings.MEDIA.name,
 
            price=settings.MEDIA.regular_price,
 
            reservation_duration=hours(24),
 
            order=60,
 
        )
 
        self.ticket_sponsor = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name=settings.SPONSOR.name,
 
            price=settings.SPONSOR.regular_price,
 
            reservation_duration=hours(24),
 
            order=70,
 
        )
 
        self.ticket_team = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name=settings.CONFERENCE_ORG.name,
 
            price=settings.CONFERENCE_ORG.regular_price,
 
            reservation_duration=hours(24),
 
            order=80,
 
        )
 
        self.ticket_volunteer = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name=settings.CONFERENCE_VOL.name,
 
            price=settings.CONFERENCE_VOL.regular_price,
 
            reservation_duration=hours(24),
 
            order=90,
 
        )
 

	
 
        # Agreements
 
        self.accept_terms = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.terms,
 
            name="I Accept",
 
            price=Decimal("00.00"),
 
            reservation_duration=hours(24),
 
            order=10,
 
            limit_per_user=1,
 
        )
 

	
 
        # for t in settings.PENGUIN_DINNER.tickets:
 
        #     self.find_or_make(
 
        #         inv.Product,
 
        #         ("name", "category",),
 
        #         category=self.penguin_dinner,
 
        #         name=t.name,
 
        #         description=t.description,
 
        #         price=t.price,
 
        #         reservation_duration=t.reservation,
 
        #         order=t.order()
 
        #     )
 

	
 
        # for t in settings.SPEAKERS_DINNER.tickets:
 
        #     self.find_or_make(
 
        #         inv.Product,
 
        #         ("name", "category",),
 
        #         category=self.speakers_dinner_ticket,
 
        #         name=t.name,
 
        #         description=t.description,
 
        #         price=t.price,
 
        #         reservation_duration=t.reservation,
 
        #         order=t.order()
 
        #     )
 

	
 
        # PDNS
 

	
 
        # self.pdns = self.find_or_make(
 
        #     inv.Product,
 
        #     ("name", "category",),
 
        #     category=self.pdns_category,
 
        #     name="Conference Attendee",
 
        #     price=Decimal("00.00"),
 
        #     reservation_duration=hours(1),
 
        #     limit_per_user=1,
 
        #     order=10,
 
        # )
 

	
pinaxcon/registrasion/migrations/0001_initial.py
Show inline comments
 
# -*- coding: utf-8 -*-
 
# Generated by Django 1.9.7 on 2016-09-22 06:25
 
from __future__ import unicode_literals
 

	
 
from django.db import migrations, models
 
import django.db.models.deletion
 
import django_countries.fields
 

	
 

	
 
_PAST_EVENTS = (
 
    (1999, "1999 Melbourne (CALU)"),
 
    (2001, "2001 Sydney"),
 
    (2002, "2002 Brisbane"),
 
    (2003, "2003 Perth"),
 
    (2004, "2004 Adelaide"),
 
    (2005, "2005 Canberra"),
 
    (2006, "2006 Dunedin"),
 
    (2007, "2007 Sydney"),
 
    (2008, "2008 Melbourne"),
 
    (2009, "2009 Hobart"),
 
    (2010, "2010 Wellington"),
 
    (2011, "2011 Brisbane"),
 
    (2012, "2012 Ballarat"),
 
    (2013, "2013 Canberra"),
 
    (2014, "2014 Perth"),
 
    (2015, "2015 Auckland"),
 
    (2016, "2016 Geelong"),
 
    (2017, "2017 Hobart"),
 
    (2018, "2018 Sydney"),
 
    (2019, "2019 Christchurch"),
 
    (2020, "2020 Gold Coast"),
 
    (2021, "2021 Online"),
 
    (1999, "CALU 1999 Melbourne"),
 
    (2001, "LCA2001 Sydney"),
 
    (2002, "LCA2002 Brisbane"),
 
    (2003, "LCA2003 Perth"),
 
    (2004, "LCA2004 Adelaide"),
 
    (2005, "LCA2005 Canberra"),
 
    (2006, "LCA2006 Dunedin"),
 
    (2007, "LCA2007 Sydney"),
 
    (2008, "LCA2008 Melbourne"),
 
    (2009, "LCA2009 Hobart"),
 
    (2010, "LCA2010 Wellington"),
 
    (2011, "LCA2011 Brisbane"),
 
    (2012, "LCA2012 Ballarat"),
 
    (2013, "LCA2013 Canberra"),
 
    (2014, "LCA2014 Perth"),
 
    (2015, "LCA2015 Auckland"),
 
    (2016, "LCA2016 Geelong"),
 
    (2017, "LCA2017 Hobart"),
 
    (2018, "LCA2018 Sydney"),
 
    (2019, "LCA2019 Christchurch"),
 
    (2020, "LCA2020 Gold Coast"),
 
    (2021, "LCA2021 Online"),
 
    (2022, "LCA2022 Online"),
 
)
 

	
 

	
 
def populate(apps, schema_editor):
 
    PastEvent = apps.get_model("pinaxcon_registrasion","PastEvent")
 

	
 
    all_such = PastEvent.objects.all()
 
    by_year = dict((event.year, event) for event in all_such)
 

	
 
    events = []
 
    for past_event in _PAST_EVENTS:
 
        if past_event[0] in by_year:
 
            continue
 
        events.append(PastEvent(
 
            year=past_event[0],
 
            name=past_event[1],
 
        ))
 

	
 
    PastEvent.objects.bulk_create(events)
 

	
 

	
 
class Migration(migrations.Migration):
 

	
 
    initial = True
 

	
 
    dependencies = [
 
        ('registrasion', '0005_auto_20160905_0945'),
 
    ]
 

	
 
    operations = [
 
        migrations.CreateModel(
 
            name='AttendeeProfile',
 
            fields=[
 
                ('attendeeprofilebase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registrasion.AttendeeProfileBase')),
 
                ('name', models.CharField(help_text=b"Your name, as you'd like it to appear on your badge. ", max_length=64, verbose_name=b'Your name (for your conference nametag)')),
 
                ('company', models.CharField(blank=True, help_text=b"The name of your company, as you'd like it on your badge", max_length=64)),
 
                ('state', models.CharField(choices=[(b'', b'Not in Australia'), (b'TAS', b'Tasmania'), (b'ACT', b'Australian Capital Territory'), (b'NSW', b'New South Wales'), (b'NT', b'Northern Territory'), (b'QLD', b'Queensland'), (b'SA', b'South Australia'), (b'VIC', b'Victoria'), (b'WA', b'Western Australia')], max_length=4, verbose_name=b'Australian State/Territory')),
 
                ('country', django_countries.fields.CountryField(max_length=2)),
 
                ('free_text_1', models.CharField(blank=True, help_text=b"A line of free text that will appear on your badge. Use this for your Twitter handle, IRC nick, your preferred pronouns or anything else you'd like people to see on your badge.", max_length=64, verbose_name=b'Free text line 1')),
 
                ('free_text_2', models.CharField(blank=True, max_length=64, verbose_name=b'Free text line 2')),
 
                ('name_per_invoice', models.CharField(blank=True, help_text=b"If your legal name is different to the name on your badge, fill this in, and we'll put it on your invoice. Otherwise, leave it blank.", max_length=256, verbose_name=b'Your legal name (for invoicing purposes)')),
 
                ('address', models.TextField(blank=True, help_text=b'This address, if provided, will appear on your invoices.', verbose_name=b'Invoicing address')),
 
                ('of_legal_age', models.BooleanField(help_text=b'Being under 18 will not stop you from attending the conference. We need to know whether you are over 18 to allow us to cater for you at venues that serve alcohol.', verbose_name=b'Are you over 18?')),
 
                ('dietary_restrictions', models.TextField(blank=True, max_length=256, verbose_name=b'Food allergies, intolerances, or dietary restrictions')),
 
                ('accessibility_requirements', models.TextField(blank=True, verbose_name=b'Accessibility-related requirements')),
 
                ('gender', models.CharField(blank=True, help_text=b'Gender data will only be used for demographic purposes.', max_length=64)),
 
                ('linux_australia', models.BooleanField(help_text=b"Select this field to register for free <a href='http://www.linux.org.au/'>Linux Australia</a> membership.", verbose_name=b'Linux Australia membership')),
 
                ('lca_announce', models.BooleanField(help_text=b'Select to be subscribed to the low-traffic lca-announce mailing list', verbose_name=b'Subscribe to lca-announce list')),
 
                ('lca_chat', models.BooleanField(help_text=b'lca2017-chat is a high-traffic mailing list used by attendees during the week of the conference for general discussion.', verbose_name=b'Subscribe to the lca2017-chat list')),
 
            ],
 
            bases=('registrasion.attendeeprofilebase',),
 
        ),
 
        migrations.CreateModel(
 
            name='PastEvent',
 
            fields=[
 
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 
                ('year', models.IntegerField(unique=True)),
 
                ('name', models.CharField(max_length=255, unique=True)),
 
            ],
 
        ),
 
        migrations.AddField(
 
            model_name='attendeeprofile',
 
            name='past_lca',
 
            field=models.ManyToManyField(blank=True, to='pinaxcon_registrasion.PastEvent', verbose_name=b'Which past linux.conf.au events have you attended?'),
 
        ),
 
        migrations.RunPython(populate),
 
    ]
pinaxcon/registrasion/migrations/0015_auto_20221208_0102.py
Show inline comments
 
new file 100644
 
# Generated by Django 2.2.28 on 2022-12-07 14:02
 

	
 
from django.db import migrations, models
 

	
 

	
 
class Migration(migrations.Migration):
 

	
 
    dependencies = [
 
        ('pinaxcon_registrasion', '0014_auto_20201123_2319'),
 
    ]
 

	
 
    operations = [
 
        migrations.AlterField(
 
            model_name='attendeeprofile',
 
            name='address_line_1',
 
            field=models.CharField(blank=True, help_text='This address, if provided, will appear on your invoices. It is also where we will ship your Open Hardware Kit if you are allocated one.', max_length=1024, verbose_name='Address line 1'),
 
        ),
 
        migrations.AlterField(
 
            model_name='attendeeprofile',
 
            name='children',
 
            field=models.CharField(blank=True, help_text="Everything Open is a family friendly conference and provides free child-care for pre-school children from 6 months up to 5 years. We hope to also provide a programme for older children and will let you know closer to the conference. If you're wanting to bring your children, please let us know their age(s) so we can ensure we have enough spaces available.", max_length=256, verbose_name='Child Ages and Information'),
 
        ),
 
        migrations.AlterField(
 
            model_name='attendeeprofile',
 
            name='lca_chat',
 
            field=models.BooleanField(blank=True, default=False, help_text='lca-chat is a high-traffic mailing list used by attendees during the week of the conference for general discussion.', verbose_name='Subscribe to the chat mailing list'),
 
        ),
 
        migrations.AlterField(
 
            model_name='attendeeprofile',
 
            name='of_legal_age',
 
            field=models.BooleanField(blank=True, help_text='Being under 18 will not stop you from attending the conference. We need to know whether you are over 18 to allow us to cater for you at venues that serve alcohol.', verbose_name='Are you over 18?'),
 
        ),
 
        migrations.AlterField(
 
            model_name='attendeeprofile',
 
            name='past_lca',
 
            field=models.ManyToManyField(blank=True, to='pinaxcon_registrasion.PastEvent', verbose_name='Which past events have you attended?'),
 
        ),
 
    ]
pinaxcon/registrasion/models.py
Show inline comments
 
from textwrap import wrap
 
from django.core.exceptions import ValidationError
 
from django.db import models
 
from django.utils.encoding import python_2_unicode_compatible
 
from django_countries.fields import CountryField
 
from registrasion import models as rego
 

	
 
@python_2_unicode_compatible
 
class PastEvent(models.Model):
 
    ''' This is populated in 0001_initial.py '''
 

	
 
    def __str__(self):
 
        return self.name
 

	
 
    year = models.IntegerField(unique=True,)
 
    name = models.CharField(max_length=255, unique=True,)
 

	
 

	
 
class AttendeeProfile(rego.AttendeeProfileBase):
 

	
 
    @classmethod
 
    def name_field(cls):
 
        ''' This is used to pre-fill the attendee's name from the
 
        speaker profile. If it's None, that functionality is disabled. '''
 
        return "name"
 

	
 
    def invoice_recipient(self):
 

	
 
        lines = [
 
            self.name_per_invoice,
 
        ]
 

	
 
        if self.company:
 
            lines.append("C/- " + self.company)
 

	
 
        if self.address_line_1:
 
            lines.append(self.address_line_1)
 

	
 
        if self.address_line_2:
 
            lines.append(self.address_line_2)
 

	
 
        if self.address_suburb or self.address_postcode:
 
            lines.append("%s %s" % (
 
                self.address_suburb or "",
 
                self.address_postcode or "",
 
            ))
 

	
 
        if self.state:
 
            lines.append(self.state)
 

	
 
        if self.country:
 
            lines.append(self.country.name)
 

	
 
        return "\n".join(lines)
 

	
 
    def clean(self):
 
        errors = []
 
        if self.country == "AU" and not self.state:
 
            errors.append(
 
                ("state", "Australians must list their state"),
 
            )
 

	
 
        if self.address_line_2 and not self.address_line_1:
 
            errors.append((
 
                "address_line_1",
 
                "Please fill in line 1 before filling line 2",
 
            ))
 

	
 
        if errors:
 
            raise ValidationError(dict(errors))
 

	
 
    def save(self):
 
        if not self.name_per_invoice:
 
            self.name_per_invoice = self.name
 
        super(AttendeeProfile, self).save()
 

	
 
    # Things that appear on badge
 
    name = models.CharField(
 
        verbose_name="Your name (for your conference nametag)",
 
        max_length=64,
 
        help_text="Your name, as you'd like it to appear on your badge. ",
 
    )
 
    company = models.CharField(
 
        verbose_name="Company",
 
        max_length=64,
 
        help_text="The name of your company, as you'd like it on your badge",
 
        blank=True,
 
    )
 

	
 
    free_text_1 = models.CharField(
 
        max_length=64,
 
        verbose_name="Free text line 1",
 
        help_text="A line of free text that will appear on your badge. Use "
 
                  "this for your Twitter handle, IRC nick, your preferred "
 
                  "pronouns or anything else you'd like people to see on "
 
                  "your badge.",
 
        blank=True,
 
    )
 
    free_text_2 = models.CharField(
 
        max_length=64,
 
        verbose_name="Free text line 2",
 
        blank=True,
 
    )
 

	
 
    # Other important Information
 
    name_per_invoice = models.CharField(
 
        verbose_name="Your legal name (for invoicing purposes)",
 
        max_length=256,
 
        help_text="If your legal name is different to the name on your badge, "
 
                  "fill this in, and we'll put it on your invoice. Otherwise, "
 
                  "leave it blank.",
 
        blank=True,
 
        )
 

	
 
    address_line_1 = models.CharField(
 
        verbose_name="Address line 1",
 
        help_text="This address, if provided, will appear on your invoices. "
 
                  "It is also where we will ship your Open Hardware Kit "
 
                  "if you are allocated one.",
 
        max_length=1024,
 
        blank=True,
 
    )
 
    address_line_2 = models.CharField(
 
        verbose_name="Address line 2",
 
        max_length=1024,
 
        blank=True,
 
    )
 
    address_suburb = models.CharField(
 
        verbose_name="City/Town/Suburb",
 
        max_length=1024,
 
        blank=True,
 
    )
 
    address_postcode = models.CharField(
 
        verbose_name="Postal/Zip code",
 
        max_length=1024,
 
        blank=True,
 
    )
 
    country = CountryField(
 
        verbose_name="Country",
 
        default="AU",
 
    )
 
    state = models.CharField(
 
        max_length=256,
 
        verbose_name="State/Territory/Province",
 
        help_text="If your Country is Australia, you must list a state.",
 
        blank=True,
 
    )
 

	
 
    of_legal_age = models.BooleanField(
 
        verbose_name="Are you over 18?",
 
        help_text="Being under 18 will not stop you from attending the "
 
                  "conference. We need to know whether you are over 18 to "
 
                  "allow us to cater for you at venues that serve alcohol.",
 
        blank=True,
 
    )
 
    dietary_restrictions = models.CharField(
 
        verbose_name="Food allergies, intolerances, or dietary restrictions",
 
        max_length=256,
 
        blank=True,
 
    )
 
    accessibility_requirements = models.CharField(
 
        verbose_name="Accessibility-related requirements",
 
        max_length=256,
 
        blank=True,
 
    )
 
    gender = models.CharField(
 
        verbose_name="Gender",
 
        help_text="Gender data will only be used for demographic purposes.",
 
        max_length=64,
 
        blank=True,
 
    )
 

	
 
    children = models.CharField(
 
        verbose_name="Child Ages and Information",
 
        max_length=256,
 
        help_text="Linux.conf.au is a family friendly conference and provides "
 
        help_text="Everything Open is a family friendly conference and provides "
 
            "free child-care for pre-school children from 6 months up to 5 years. We "
 
            "hope to also provide a programme for older children and will let you "
 
            "know closer to the conference. If you're wanting to bring your children "
 
            "to LCA, please let us know their age(s) so we can ensure we have "
 
            "know closer to the conference. If you're wanting to bring your children, "
 
            "please let us know their age(s) so we can ensure we have "
 
            "enough spaces available.",
 
        blank=True
 
    )
 

	
 
    linux_australia = models.BooleanField(
 
        verbose_name="Linux Australia membership",
 
        help_text="Select this field to register for free "
 
                  "<a href='http://www.linux.org.au/'>Linux Australia</a> "
 
                  "membership.",
 
        blank=True,
 
    )
 

	
 
    lca_announce = models.BooleanField(
 
        verbose_name="Subscribe to lca-announce list",
 
        help_text="Select to be subscribed to the low-traffic lca-announce "
 
                  "mailing list",
 
        blank=True,
 
    )
 

	
 
    lca_chat = models.BooleanField(
 
        verbose_name="Subscribe to the LCA chat list",
 
        verbose_name="Subscribe to the chat mailing list",
 
        help_text="lca-chat is a high-traffic mailing list used by "
 
                  "attendees during the week of the conference for general "
 
                  "discussion.",
 
        blank=True,
 
        default=False,
 
    )
 

	
 
    future_conference = models.BooleanField(
 
        verbose_name = "Reuse my login for future Linux Australia conferences?",
 
        help_text="Select to have your login details made available to future "
 
                  "Linux Australia conferences who share the same Single Sign "
 
                  "On system.",
 
        blank=True,
 
        default=False,
 
    )
 

	
 
    past_lca = models.ManyToManyField(
 
        PastEvent,
 
        verbose_name="Which past linux.conf.au events have you attended?",
 
        verbose_name="Which past events have you attended?",
 
        blank=True,
 
    )
 

	
 
    def first_name(self):
 
        return wrap(self.name, 15, break_long_words=False)[0]
 

	
 
    def last_name(self):
 
        names = wrap(self.name, 15, break_long_words=False)
 
        return names[1] if len(names) > 1 else ''
pinaxcon/settings.py
Show inline comments
...
 
@@ -174,414 +174,408 @@ TEMPLATES = [
 
                "django_settings_export.settings_export",
 
            ],
 
        },
 
    },
 
]
 

	
 
MIDDLEWARE = [
 
    "whitenoise.middleware.WhiteNoiseMiddleware",
 
    "django.contrib.sessions.middleware.SessionMiddleware",
 
    "django.middleware.common.CommonMiddleware",
 
    "django.middleware.csrf.CsrfViewMiddleware",
 
    "django.contrib.auth.middleware.AuthenticationMiddleware",
 
    "djangosaml2.middleware.SamlSessionMiddleware",
 
    "django.contrib.messages.middleware.MessageMiddleware",
 
    "debug_toolbar.middleware.DebugToolbarMiddleware",
 
    "reversion.middleware.RevisionMiddleware",
 
    "waffle.middleware.WaffleMiddleware",
 
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
 
    "django.contrib.flatpages.middleware.FlatpageFallbackMiddleware",
 
    'pinaxcon.monkey_patch.MonkeyPatchMiddleware',
 
]
 

	
 
if DEV_MODE and DEV_MODE == "LAPTOP":
 
    ROOT_URLCONF = "pinaxcon.devmode_urls"
 
else:
 
    ROOT_URLCONF = "pinaxcon.urls"
 

	
 
# Python dotted path to the WSGI application used by Django's runserver.
 
WSGI_APPLICATION = "pinaxcon.wsgi.application"
 

	
 
INSTALLED_APPS = [
 
    "whitenoise.runserver_nostatic",
 
    "django.contrib.admin",
 
    "django.contrib.auth",
 
    "django.contrib.contenttypes",
 
    "django.contrib.flatpages",
 
    "django.contrib.messages",
 
    "django.contrib.sessions",
 
    "django.contrib.sites",
 
    "django.contrib.staticfiles",
 
    "django.contrib.humanize",
 
    "debug_toolbar",
 

	
 
    'djangosaml2',
 

	
 
    # theme
 
    "bootstrapform",
 
    "pinax_theme_bootstrap",
 
    "sass_processor",
 
    "capture_tag",
 

	
 
    # external
 
    "easy_thumbnails",
 
    "taggit",
 
    "reversion",
 
    "sitetree",
 
    "django_jsonfield_backport",
 
    "pinax.eventlog",
 
    "timezone_field",
 

	
 
    # symposion
 
    "symposion",
 
    "symposion.conference",
 
    "symposion.proposals",
 
    "symposion.reviews",
 
    "symposion.schedule",
 
    "symposion.speakers",
 
    "symposion.teams",
 

	
 
    # Registrasion
 
    "registrasion",
 

	
 
    # Registrasion-stripe
 
    "pinax.stripe",
 
    "django_countries",
 
    "registripe",
 

	
 
    #registrasion-desk
 
    "regidesk",
 

	
 
    # admin - required by registrasion ??
 
    "nested_admin",
 

	
 
    # project
 
    "pinaxcon",
 
    "pinaxcon.proposals",
 
    "pinaxcon.registrasion",
 
    "pinaxcon.raffle",
 
    "jquery",
 
    "djangoformsetjs",
 

	
 
    # testing and rollout
 
    "django_nose",
 
    "waffle",
 

	
 
    "crispy_forms",
 
]
 

	
 
CRISPY_TEMPLATE_PACK = "bootstrap4"
 

	
 
DEBUG_TOOLBAR_PANELS = [
 
    'debug_toolbar.panels.versions.VersionsPanel',
 
    'debug_toolbar.panels.timer.TimerPanel',
 
    'debug_toolbar.panels.settings.SettingsPanel',
 
    'debug_toolbar.panels.headers.HeadersPanel',
 
    'debug_toolbar.panels.request.RequestPanel',
 
    'debug_toolbar.panels.sql.SQLPanel',
 
    'debug_toolbar.panels.staticfiles.StaticFilesPanel',
 
    'debug_toolbar.panels.cache.CachePanel',
 
    'debug_toolbar.panels.signals.SignalsPanel',
 
    'debug_toolbar.panels.logging.LoggingPanel',
 
    'debug_toolbar.panels.templates.TemplatesPanel',
 
    'debug_toolbar.panels.redirects.RedirectsPanel',
 
]
 

	
 
DEBUG_TOOLBAR_CONFIG = {
 
    'INTERCEPT_REDIRECTS': False,
 
}
 

	
 
INTERNAL_IPS = [
 
    '127.0.0.1',
 
]
 

	
 
from debug_toolbar.panels.logging import collector
 
LOGGING = {
 
    'version': 1,
 
    'disable_existing_loggers': False,
 
    'formatters': {
 
        'verbose': {
 
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
 
        },
 
        'simple': {
 
            'format': '%(asctime)s %(levelname)s $(module)s %(message)s'
 
        },
 
    },
 
    'filters': {
 
        'require_debug_false': {
 
            '()': 'django.utils.log.RequireDebugFalse'
 
        }
 
    },
 
    'handlers': {
 
        'console': {
 
            'level': 'DEBUG',
 
            'class': 'logging.StreamHandler',
 
            'formatter': 'simple'
 
        },
 
        'mail_admins': {
 
            'level': 'ERROR',
 
            'filters': ['require_debug_false'],
 
            'class': 'django.utils.log.AdminEmailHandler',
 
            'include_html': True,
 
        },
 
        'djdt_log': {
 
            'level': 'DEBUG',
 
            'class': 'debug_toolbar.panels.logging.ThreadTrackingHandler',
 
            'collector': collector,
 
        },
 
    },
 
    'loggers': {
 
        'django.request': {
 
            'handlers': ['mail_admins'],
 
            'level': 'DEBUG',
 
            'propagate': True,
 
        },
 
        'symposion.request': {
 
            'handlers': ['mail_admins'],
 
            'level': 'DEBUG',
 
            'propagate': True,
 
        },
 
    },
 
    'root': {
 
        'handlers': ['console', 'djdt_log'],
 
        'level': 'DEBUG'
 
    },
 
}
 
FIXTURE_DIRS = [
 
    os.path.join(PROJECT_ROOT, "fixtures"),
 
]
 

	
 
AUTHENTICATION_BACKENDS = [
 
    'symposion.teams.backends.TeamPermissionsBackend',
 
    'django.contrib.auth.backends.ModelBackend',
 
    'djangosaml2.backends.Saml2Backend',
 
]
 

	
 
LOGIN_URL = '/saml2/login/'
 
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
 

	
 
CONFERENCE_ID = 1
 
PROPOSAL_FORMS = {
 
    "talk": "pinaxcon.proposals.forms.TalkProposalForm",
 
    "tutorial": "pinaxcon.proposals.forms.TutorialProposalForm",
 
    "miniconf": "pinaxcon.proposals.forms.MiniconfProposalForm",
 
    ### LCA2022 Miniconfs
 
    "glam-community-miniconf": "pinaxcon.proposals.forms.GlamCommunityProposalForm",
 
    "kernel-miniconf": "pinaxcon.proposals.forms.KernelProposalForm",
 
    "open-hardware-miniconf": "pinaxcon.proposals.forms.OpenHardwareProposalForm",
 
    "sysadmin-miniconf": "pinaxcon.proposals.forms.SysAdminProposalForm",
 
}
 
MAIN_CONFERENCE_PROPOSAL_KINDS = ("Talk", "Miniconf")
 
MAIN_CONFERENCE_PROPOSAL_KINDS = ("Talk",)
 

	
 
# Registrasion bits:
 
ATTENDEE_PROFILE_MODEL = "pinaxcon.registrasion.models.AttendeeProfile"
 
ATTENDEE_PROFILE_FORM = "pinaxcon.registrasion.forms.ProfileForm"
 
INVOICE_CURRENCY = "AUD"
 
GST_RATE =  Decimal('0.1')
 
TICKET_PRODUCT_CATEGORY = 1
 
TERMS_PRODUCT_CATEGORY = 2
 
ATTENDEE_PROFILE_FORM = "pinaxcon.registrasion.forms.ProfileForm"
 

	
 
#REGIDESK
 
REGIDESK_BOARDING_GROUP = "Ready For Boarding"
 

	
 
# CSRF custom error screen
 
CSRF_FAILURE_VIEW = "pinaxcon.csrf_view.csrf_failure"
 

	
 
# Use nose to run all tests
 
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
 

	
 
# Tell nose to measure coverage on the 'foo' and 'bar' apps
 
NOSE_ARGS = [
 
    '--with-coverage',
 
    '--cover-package=registrasion.controllers,registrasion.models',
 
]
 

	
 
SASS_PROCESSOR_INCLUDE_DIRS = [
 
    os.path.join(PROJECT_ROOT, 'static/src/bootstrap/scss'),
 
    os.path.join(PROJECT_ROOT, 'static/src/scss'),
 
]
 

	
 
xmlsec_binary = '/usr/bin/xmlsec1'
 
if not os.path.isfile(xmlsec_binary):
 
        sys.exit('ERROR: xmlsec1 binary missing, EXITING')
 

	
 
SAML_ATTRIBUTE_MAPPING = {
 
    'uid': ('username', ),
 
    'mail': ('email', ),
 
    'givenName': ('first_name', ),
 
    'sn': ('last_name', ),
 
}
 
SAML_CONFIG = {
 
    'xmlsec_binary': xmlsec_binary,
 
    'entityid': saml2_entityid,
 
    'attribute_map_dir': os.path.join(PACKAGE_ROOT, 'saml2/attribute-maps'),
 
    'service': {
 
        'sp': {
 
            'name': saml2_sp_name,
 
            'endpoints': {
 
                'assertion_consumer_service': [
 
                    saml2_sp_assertion_service,
 
                    ],
 
                'single_logout_service': [
 
                    (saml2_sp_slo_rdir, saml2.BINDING_HTTP_REDIRECT),
 
                    (saml2_sp_slo_post, saml2.BINDING_HTTP_POST),
 
                    ],
 
                },
 
            'logout_requests_signed': True,
 
            'required_attributes': ['uid', 'mail', 'givenName', 'sn'],
 
            },
 
        },
 
    'metadata': saml2_idp_metadata,
 
    'debug': 0,
 
    'key_file': saml2_signing_key,
 
    'cert_file': saml2_signing_crt,
 
    'encryption_keypairs': [{
 
        'key_file': saml2_encr_key,
 
        'cert_file': saml2_encr_crt,
 
    }],
 
    'contact_person': saml2_contact,
 
    'valid_for': 10,
 
}
 

	
 
if 'SAML_CONFIG_LOADER' in os.environ:
 
    SAML_CONFIG_LOADER = os.environ.get('SAML_CONFIG_LOADER')
 

	
 
DEFAULT_FILE_STORAGE = os.environ.get('DEFAULT_FILE_STORAGE', 'gapc_storage.storage.GoogleCloudStorage')
 
GAPC_STORAGE = {
 
    'num_retries': 2,
 
}
 

	
 
SETTINGS_EXPORT = [
 
    'DEBUG',
 
    'ANALYTICS_KEY',
 
    'TIME_ZONE',
 
    'LCA_START',
 
    'CONF_START',
 
    'CONFERENCE_EMAIL',
 
]
 

	
 
if DEV_MODE and DEV_MODE == "LAPTOP":
 
    print("ENABLING LAPTOP MODE")
 
    from .devmode_settings import *
 

	
 

	
 
class Category(object):
 
    tickets = []
 

	
 
    @classmethod
 
    def order(cls, ticket) -> int:
 
        return (cls.tickets.index(ticket) + 1) * 10
 

	
 

	
 
@dataclass(frozen=True)
 
class Ticket:
 
    name: str
 
    regular_price: Decimal
 
    earlybird_price: Decimal
 

	
 
    def earlybird_discount(self):
 
        return self.regular_price - self.earlybird_price
 

	
 

	
 
@dataclass(frozen=True)
 
class DinnerTicket:
 
    name: str
 
    price: Decimal
 
    description: str
 
    reservation: timedelta
 
    cat: Category
 

	
 
    def order(self):
 
        return self.cat.order(self)
 

	
 

	
 
class PenguinDinnerTicket(DinnerTicket):
 
    pass
 

	
 

	
 
class SpeakersDinnerTicket(DinnerTicket):
 
    pass
 

	
 

	
 
class SpeakersDinnerCat(Category):
 
    @classmethod
 
    def create(cls, name: str, price: Decimal, description: str, reservation: timedelta) -> SpeakersDinnerTicket:
 
        t = SpeakersDinnerTicket(name, price, description, reservation, cls)
 
        cls.tickets.append(t)
 
        return t
 

	
 

	
 
class PenguinDinnerCat(Category):
 
    @classmethod
 
    def create(cls, name: str, price: Decimal, description: str, reservation: timedelta) -> PenguinDinnerTicket:
 
        t = PenguinDinnerTicket(name, price, description, reservation, cls)
 
        cls.tickets.append(t)
 
        return t
 

	
 

	
 
CONFERENCE_NAME = os.environ.get('CONFERENCE_NAME', 'linux.conf.au')
 
CONFERENCE_NAME_SHORT = os.environ.get('CONFERENCE_NAME_SHORT', 'LCA')
 
CONFERENCE_NAME = os.environ.get('CONFERENCE_NAME', 'Everything Open')
 
CONFERENCE_NAME_SHORT = os.environ.get('CONFERENCE_NAME_SHORT', 'EO')
 
CONFERENCE_EMAIL = os.environ.get('CONFERENCE_EMAIL', DEFAULT_FROM_EMAIL)
 
LCA_TZINFO = pytz.timezone(TIME_ZONE)
 
LCA_START = LCA_TZINFO.localize(datetime(2022, 1, 14))
 
LCA_END = LCA_TZINFO.localize(datetime(2022, 1, 16))
 
LCA_MINICONF_END = LCA_TZINFO.localize(datetime(2022, 1, 14, 23, 59))
 
EARLY_BIRD_DEADLINE = LCA_TZINFO.localize(datetime(2022, 12, 1))
 
PENGUIN_DINNER_TICKET_DATE = date(2022, 1, 14)
 
SPEAKER_DINNER_TICKET_DATE = date(2022, 1, 15)
 
PDNS_TICKET_DATE = date(2022, 1, 16)
 
CONF_TZINFO = pytz.timezone(TIME_ZONE)
 
CONF_START = CONF_TZINFO.localize(datetime(2023, 3, 14))
 
CONF_END = CONF_TZINFO.localize(datetime(2023, 3, 16))
 
CONF_MINICONF_END = CONF_TZINFO.localize(datetime(2023, 3, 14, 23, 59))
 
EARLY_BIRD_DEADLINE = CONF_TZINFO.localize(datetime(2023, 1, 28))
 
PENGUIN_DINNER_TICKET_DATE = date(2023, 3, 15)
 
SPEAKER_DINNER_TICKET_DATE = date(2023, 3, 14)
 
PDNS_TICKET_DATE = date(2023, 3, 16)
 

	
 
TSHIRT_PRICE = Decimal("25.00")
 

	
 
CONTRIBUTOR = Ticket("Contributor", Decimal("300.00"), Decimal("250.00"))
 
PROFESSIONAL = Ticket("Professional", Decimal("125.00"), Decimal("100.00"))
 
HOBBYIST = Ticket("Hobbyist", Decimal("70.00"), None)
 
STUDENT = Ticket("Student", Decimal("30.00"), None)
 
MINICONF_ONLY = Ticket("Miniconf Only", Decimal("25.00"), None)
 

	
 
MEDIA = Ticket("Media", Decimal("0.0"), None)
 
SPEAKER = Ticket("Speaker", Decimal("0.0"), None)
 
SPONSOR = Ticket("Sponsor", Decimal("0.0"), None)
 

	
 
CONFERENCE_ORG = Ticket("Conference Organiser", Decimal("0.0"), None)
 
CONFERENCE_VOL = Ticket("Conference Volunteer", Decimal("0.0"), None)
 

	
 
PENGUIN_DINNER = PenguinDinnerCat
 
PENGUIN_DINNER_ADULT = PenguinDinnerCat.create(
 
    "Adult", Decimal("95.00"),
 
    "Includes an adult's meal and full beverage service.",
 
    timedelta(hours=1))
 
PENGUIN_DINNER_CHILD = PenguinDinnerCat.create(
 
    "Child", Decimal("50.00"),
 
    "Children 14 and under. "
 
    "Includes a child's meal and soft drink service.",
 
    timedelta(hours=1))
 
PENGUIN_DINNER_INFANT = PenguinDinnerCat.create(
 
    "Infant", Decimal("0.0"),
 
    "Includes no food or beverage service.",
 
    timedelta(hours=1))
 

	
 
SPEAKERS_DINNER = SpeakersDinnerCat
 

	
 
SPEAKERS_DINNER_ADULT = SpeakersDinnerCat.create(
 
    "Adult", Decimal("100.00"),
 
    "Includes an adult's meal and full beverage service.",
 
    timedelta(hours=1))
 

	
 
# SPEAKERS_DINNER_CHILD = SpeakersDinnerCat.create(
 
#     "Child", Decimal("60.00"),
 
#     "Children 14 and under. "
 
#     "Includes a child's meal and soft drink service.",
 
#     timedelta(hours=1))
 

	
 
# SPEAKERS_DINNER_INFANT = SpeakersDinnerCat.create(
 
#     "Infant", Decimal("00.00"),
 
#     "Infant must be seated in an adult's lap. "
 
#     "No food or beverage service.",
 
#     timedelta(hours=1))
 

	
 

	
 
# Venueless integration
 
VENUELESS_URL = os.environ.get('VENUELESS_URL', None)
 
VENUELESS_AUDIENCE = os.environ.get('VENUELESS_AUDIENCE', "venueless")
 
VENUELESS_TOKEN_ISSUER = os.environ.get('VENUELESS_TOKEN_ISSUER', "any")
 
VENUELESS_SECRET = os.environ.get('VENUELESS_SECRET', SECRET_KEY)
pinaxcon/templates/nav.html
Show inline comments
 
{% load sitetree %}
 
{% load static %}
 

	
 
<nav class="navbar navbar-expand-lg navbar-light bg-blaze">
 
<nav class="navbar navbar-expand-lg navbar-light bg-dawn-sea">
 
  <div class="container">
 
    <a class="navbar-brand" href="/">
 
      <img src="{% static 'lca/lca2022.svg' %}" alt="linux.conf.au 2022 logo" height="56px">
 
      <img src="{% static 'img/eo2023.svg' %}" alt="Everything Open 2023 logo" height="56px">
 
    </a>
 

	
 
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
 
      <span class="navbar-toggler-icon"></span>
 
    </button>
 

	
 
    {% sitetree_menu from "main" include "trunk" template "sitetree_header.html" %}
 
  </div>
 
</nav>
pinaxcon/templates/registrasion/badge.svg
Show inline comments
 
<?xml version="1.0" encoding="UTF-8"?>
 
<!--
 
{% load registrasion_tags %}
 
{% load lca2018_tags %}
 
{% items_purchased as purchased %}
 
{% items_pending as pending %}
 
{% items_purchased 1 as ticket %}
 
{% total_items_purchased 3 as penguin_dinner_count %}
 
{% total_items_purchased 4 as speakers_dinner_count %}
 
{% total_items_purchased 5 as pdns_count %}
 
{% ticket_type as ticket_type %}
 
-->
 
<svg xmlns="http://www.w3.org/2000/svg" width="105.28mm" height="148mm" viewBox="0 0 296 416">
 
    <title>Badge Preview</title>
 
    <defs>
 
        <clipPath id="clip-path">
 
            <path d="M254.71,248.07s1.74,3.14,1.56,4.41a22.72,22.72,0,0,1-1,4.21c-.34.81-1.73,2.61-2.42,2.7s-4.34,3.05-5.38,2.69a5.85,5.85,0,0,1-1.91-1.62c-2.25-3.31-.43-5.12-.17-5.57s2-1.88,2.86-3,2.43-3.06,3.21-3.42S254.46,247.7,254.71,248.07Z" fill="none"/>
 
        </clipPath>
 
        <clipPath id="clip-path-2">
 
            <rect x="243.03" y="246.54" width="14.63" height="16.96" fill="none"/>
 
        </clipPath>
 
        <clipPath id="clip-path-3">
 
            <path d="M267.29,266.85s1.17-1.86,1.34-2.29.34-1.11.41-1.38a.7.7,0,0,1,.08-.2,3,3,0,0,1,.52-.71c.21-.18.48-.53.69-.13s1.08,2.29,1.17,2.46.83.55,1,.78,1.21.83,1.34,1,.91.35,1.25.87-1.94-.43-2.46-.69a4.78,4.78,0,0,0-1.75-.42,7.26,7.26,0,0,0-2.16,0c-.34.17-1.34.43-1.47.65" fill="none"/>
 
        </clipPath>
 
        <clipPath id="clip-path-4">
 
            <rect x="265.85" y="260.58" width="10.68" height="8.2" fill="none"/>
 
        </clipPath>
 
    </defs>
 
    <g id="badge_preview" data-name="Badge Preview">
 
        <path d="M49.4,401.09H75.57a8.39,8.39,0,0,1-.78,2.39H49.4Z" fill="#4181c3"/>
 
        <path d="M49.4,378.48H74.84a11.33,11.33,0,0,1,.77,2.39H49.4Z" fill="#4181c3"/>
 
        <path d="M54.12,392.05H72.27a14,14,0,0,1,2.13,2.39H54.12Z" fill="#4181c3"/>
 
        <path d="M68.27,399h7.57a8.91,8.91,0,0,0-.41-2.39H68.27Z" fill="#4181c3"/>
 
        <path d="M54.12,389.91H72.3a13.41,13.41,0,0,0,2.11-2.38H54.12Z" fill="#4181c3"/>
 
        <path d="M68.27,383h7.54a10.29,10.29,0,0,1-.39,2.38H68.27Z" fill="#4181c3"/>
 
        <path d="M49.4,405.62H73.06c-2.1,1.77-4,2.38-7.2,2.38H49.4Z" fill="#4181c3"/>
 
        <path d="M49.4,376.35H73.06c-2.1-1.78-4-2.39-7.2-2.39H49.4Z" fill="#4181c3"/>
 
        <rect x="30.53" y="373.96" width="16.51" height="2.39" fill="#4181c3"/>
 
        <rect x="30.53" y="378.48" width="16.51" height="2.39" fill="#4181c3"/>
 
        <rect x="30.53" y="401.09" width="16.51" height="2.39" fill="#4181c3"/>
 
        <rect x="35.25" y="396.57" width="7.08" height="2.39" fill="#4181c3"/>
 
        <rect x="35.25" y="392.05" width="7.08" height="2.39" fill="#4181c3"/>
 
        <rect x="35.25" y="387.53" width="7.08" height="2.39" fill="#4181c3"/>
 
        <rect x="35.25" y="383.01" width="7.08" height="2.39" fill="#4181c3"/>
 
        <rect x="54.12" y="396.57" width="7.08" height="2.39" fill="#4181c3"/>
 
        <rect x="54.12" y="383.01" width="7.08" height="2.39" fill="#4181c3"/>
 
        <polygon points="93.31 398.96 99.85 398.96 100.68 396.57 92.47 396.57 93.31 398.96" fill="#4181c3"/>
 
        <polygon points="91.73 394.44 101.42 394.44 102.26 392.05 90.9 392.05 91.73 394.44" fill="#4181c3"/>
 
        <rect x="30.53" y="405.62" width="16.51" height="2.39" fill="#4181c3"/>
 
        <polygon points="96.45 408 96.7 408 97.53 405.62 95.62 405.62 96.45 408" fill="#4181c3"/>
 
        <rect x="82.43" y="396.57" width="7.08" height="2.39" fill="#4181c3"/>
 
        <rect x="82.43" y="392.05" width="7.08" height="2.39" fill="#4181c3"/>
 
        <rect x="77.71" y="405.62" width="11.79" height="2.39" fill="#4181c3"/>
 
        <rect x="77.71" y="401.09" width="11.79" height="2.39" fill="#4181c3"/>
 
        <polygon points="94.88 403.48 98.28 403.48 99.11 401.09 94.05 401.09 94.88 403.48" fill="#4181c3"/>
 
        <rect x="103.66" y="396.57" width="7.08" height="2.39" fill="#4181c3"/>
 
        <rect x="103.66" y="392.05" width="7.08" height="2.39" fill="#4181c3"/>
 
        <rect x="103.65" y="405.62" width="11.79" height="2.39" fill="#4181c3"/>
 
        <rect x="103.66" y="401.09" width="11.79" height="2.39" fill="#4181c3"/>
 
        <polygon points="94.22 383 82.42 383 82.42 385.39 95.07 385.39 94.22 383" fill="#4181c3"/>
 
        <polygon points="97.33 387.53 96.58 389.67 95.83 387.53 82.43 387.53 82.43 389.91 89.5 389.91 89.5 388.03 90.16 389.91 103 389.91 103.65 388.03 103.65 388.05 103.66 388.05 103.66 389.91 110.73 389.91 110.73 387.53 97.33 387.53" fill="#4181c3"/>
 
        <polygon points="91.02 373.96 77.71 373.96 77.71 376.35 91.87 376.35 91.02 373.96" fill="#4181c3"/>
 
        <polygon points="92.62 378.48 77.71 378.48 77.71 380.87 93.47 380.87 92.62 378.48" fill="#4181c3"/>
 
        <polygon points="98.93 383 110.73 383 110.73 385.39 98.09 385.39 98.93 383" fill="#4181c3"/>
 
        <polygon points="102.14 373.96 115.45 373.96 115.45 376.35 101.29 376.35 102.14 373.96" fill="#4181c3"/>
 
        <polygon points="100.53 378.48 115.45 378.48 115.45 380.87 99.69 380.87 100.53 378.48" fill="#4181c3"/>
 
        <path d="M118,406.23a1.87,1.87,0,1,1,1.87,1.87A1.87,1.87,0,0,1,118,406.23Zm3.43,0a1.57,1.57,0,1,0-1.56,1.63A1.56,1.56,0,0,0,121.45,406.23Zm-.63,1h-.31l-.59-1h-.47v1h-.25v-2.08h.91c.55,0,.73.2.73.55s-.28.56-.65.57Zm-1-1.16c.3,0,.73.05.73-.38s-.27-.36-.52-.36h-.6v.74Z" fill="#4181c3"/>
 
        <rect x="118.88" y="404.36" width="2.88" height="3.76" fill="none"/>
 
        <path d="M105.06,365.54v.32h-3.39V361H105v.33H102v1.93h2.61v.31H102v2Z" fill="#231f20"/>
 
        <path d="M111.86,362.58a1.59,1.59,0,0,1,.39,1.15v2.13h-.35v-2.1a1.33,1.33,0,0,0-.3-.94,1.07,1.07,0,0,0-.84-.32,1.27,1.27,0,0,0-1,.38,1.46,1.46,0,0,0-.36,1v1.94h-.35v-2.1a1.33,1.33,0,0,0-.3-.94,1.07,1.07,0,0,0-.84-.32,1.24,1.24,0,0,0-1,.38,1.46,1.46,0,0,0-.36,1v1.94h-.35v-3.65h.33V363a1.42,1.42,0,0,1,.54-.6,1.69,1.69,0,0,1,.86-.21,1.51,1.51,0,0,1,.84.23,1.14,1.14,0,0,1,.5.65,1.41,1.41,0,0,1,.57-.64,1.69,1.69,0,0,1,.91-.24A1.39,1.39,0,0,1,111.86,362.58Z" fill="#231f20"/>
 
        <path d="M116.45,362.42a1.72,1.72,0,0,1,.65.66,2.12,2.12,0,0,1,0,1.92,1.72,1.72,0,0,1-.65.66,1.87,1.87,0,0,1-.92.23,1.65,1.65,0,0,1-.88-.23A1.61,1.61,0,0,1,114,365v2.19h-.35v-5H114v.86a1.53,1.53,0,0,1,.61-.65,1.7,1.7,0,0,1,.89-.24A1.78,1.78,0,0,1,116.45,362.42Zm-.19,3a1.34,1.34,0,0,0,.53-.55,1.76,1.76,0,0,0,0-1.59,1.34,1.34,0,0,0-.53-.55,1.44,1.44,0,0,0-.75-.19,1.51,1.51,0,0,0-.76.19,1.38,1.38,0,0,0-.52.55,1.76,1.76,0,0,0,0,1.59,1.38,1.38,0,0,0,.52.55,1.51,1.51,0,0,0,.76.2A1.45,1.45,0,0,0,116.26,365.38Z" fill="#231f20"/>
 
        <path d="M121.51,364.12h-3.15a1.47,1.47,0,0,0,.22.76,1.35,1.35,0,0,0,.55.51,1.55,1.55,0,0,0,.78.19,1.76,1.76,0,0,0,.66-.13,1.48,1.48,0,0,0,.51-.38l.2.23a1.67,1.67,0,0,1-.6.44,2,2,0,0,1-.78.15,1.94,1.94,0,0,1-1-.24,1.61,1.61,0,0,1-.67-.65,1.93,1.93,0,0,1-.24-1,2,2,0,0,1,.23-1,1.71,1.71,0,0,1,.62-.66,1.73,1.73,0,0,1,.9-.24,1.67,1.67,0,0,1,.89.24,1.56,1.56,0,0,1,.62.65,1.88,1.88,0,0,1,.23.95Zm-2.43-1.46a1.44,1.44,0,0,0-.5.48,1.68,1.68,0,0,0-.21.71h2.8a1.43,1.43,0,0,0-.71-1.19,1.49,1.49,0,0,0-1.38,0Z" fill="#231f20"/>
 
        <path d="M123.46,362.39a1.7,1.7,0,0,1,.87-.21v.34h-.09a1.2,1.2,0,0,0-.95.38A1.52,1.52,0,0,0,123,364v1.9h-.35v-3.65h.33v.8A1.29,1.29,0,0,1,123.46,362.39Z" fill="#231f20"/>
 
        <path d="M125.75,365.65a1.59,1.59,0,0,1-.65-.66,2,2,0,0,1,0-1.91,1.65,1.65,0,0,1,.65-.66,1.94,1.94,0,0,1,1.87,0,1.72,1.72,0,0,1,.65.66,2,2,0,0,1,0,1.91,1.65,1.65,0,0,1-.65.66,1.94,1.94,0,0,1-1.87,0Zm1.69-.27a1.38,1.38,0,0,0,.52-.55,1.76,1.76,0,0,0,0-1.59,1.38,1.38,0,0,0-.52-.55,1.48,1.48,0,0,0-.76-.19,1.44,1.44,0,0,0-.75.19,1.38,1.38,0,0,0-.52.55,1.68,1.68,0,0,0,0,1.59,1.38,1.38,0,0,0,.52.55,1.45,1.45,0,0,0,.75.2A1.49,1.49,0,0,0,127.44,365.38Z" fill="#231f20"/>
 
        <path d="M130.46,362.39a1.67,1.67,0,0,1,.87-.21v.34h-.09a1.2,1.2,0,0,0-1,.38A1.52,1.52,0,0,0,130,364v1.9h-.35v-3.65h.33v.8A1.29,1.29,0,0,1,130.46,362.39Z" fill="#231f20"/>
 
        <path d="M137.47,361.4a1.5,1.5,0,0,1,.53,1.22,1.48,1.48,0,0,1-.53,1.2,2.2,2.2,0,0,1-1.45.44h-1.4v1.6h-.35V361H136A2.2,2.2,0,0,1,137.47,361.4Zm-.25,2.2a1.39,1.39,0,0,0,0-2,1.84,1.84,0,0,0-1.2-.34h-1.4v2.65H136A1.9,1.9,0,0,0,137.22,363.6Z" fill="#231f20"/>
 
        <path d="M142.15,364.12H139a1.47,1.47,0,0,0,.22.76,1.35,1.35,0,0,0,.55.51,1.55,1.55,0,0,0,.78.19,1.76,1.76,0,0,0,.66-.13,1.48,1.48,0,0,0,.51-.38l.2.23a1.67,1.67,0,0,1-.6.44,2,2,0,0,1-.78.15,1.94,1.94,0,0,1-1-.24,1.61,1.61,0,0,1-.67-.65,1.93,1.93,0,0,1-.24-1,1.9,1.9,0,0,1,.23-1,1.71,1.71,0,0,1,.62-.66,1.73,1.73,0,0,1,.9-.24,1.67,1.67,0,0,1,.89.24,1.62,1.62,0,0,1,.62.65,1.88,1.88,0,0,1,.23.95Zm-2.42-1.46a1.44,1.44,0,0,0-.5.48,1.68,1.68,0,0,0-.21.71h2.8a1.6,1.6,0,0,0-.21-.7,1.38,1.38,0,0,0-.5-.49,1.44,1.44,0,0,0-.69-.17A1.41,1.41,0,0,0,139.73,362.66Z" fill="#231f20"/>
 
        <path d="M146.12,362.58a1.59,1.59,0,0,1,.4,1.15v2.13h-.35v-2.1a1.29,1.29,0,0,0-.32-.94,1.13,1.13,0,0,0-.87-.32,1.31,1.31,0,0,0-1,.38,1.42,1.42,0,0,0-.37,1v1.94h-.35v-3.65h.33V363a1.38,1.38,0,0,1,.57-.6,1.67,1.67,0,0,1,.88-.22A1.46,1.46,0,0,1,146.12,362.58Z" fill="#231f20"/>
 
        <path d="M151.25,362.21v3.26a1.8,1.8,0,0,1-.44,1.35,1.85,1.85,0,0,1-1.33.43,3,3,0,0,1-.95-.15,1.94,1.94,0,0,1-.72-.43l.19-.27a1.81,1.81,0,0,0,.66.39,2.21,2.21,0,0,0,.82.14,1.46,1.46,0,0,0,1.07-.34,1.43,1.43,0,0,0,.35-1.08v-.61a1.52,1.52,0,0,1-.62.61,1.79,1.79,0,0,1-.9.22,1.87,1.87,0,0,1-.92-.23,1.67,1.67,0,0,1-.66-.63,1.78,1.78,0,0,1-.24-.92,1.74,1.74,0,0,1,.24-.91,1.54,1.54,0,0,1,.66-.63,1.87,1.87,0,0,1,.92-.23,1.84,1.84,0,0,1,.91.23,1.42,1.42,0,0,1,.63.63v-.83Zm-1.07,3a1.35,1.35,0,0,0,.54-.52,1.6,1.6,0,0,0,0-1.51,1.42,1.42,0,0,0-.54-.52,1.62,1.62,0,0,0-.77-.18,1.58,1.58,0,0,0-.76.18,1.42,1.42,0,0,0-.54.52,1.6,1.6,0,0,0,0,1.51,1.35,1.35,0,0,0,.54.52,1.59,1.59,0,0,0,.76.19A1.63,1.63,0,0,0,150.18,365.23Z" fill="#231f20"/>
 
        <path d="M155.94,362.21v3.65h-.34v-.78a1.31,1.31,0,0,1-.54.6,1.64,1.64,0,0,1-.84.21,1.39,1.39,0,0,1-1.52-1.55v-2.13h.35v2.11a1.26,1.26,0,0,0,.31.93,1.18,1.18,0,0,0,.89.33,1.27,1.27,0,0,0,1-.39,1.45,1.45,0,0,0,.36-1v-2Z" fill="#231f20"/>
 
        <path d="M157.39,361.24a.29.29,0,0,1,0-.4.29.29,0,0,1,.21-.09.32.32,0,0,1,.2.08.3.3,0,0,1,.08.2.32.32,0,0,1-.08.21.32.32,0,0,1-.2.08A.32.32,0,0,1,157.39,361.24Zm0,1h.35v3.65h-.35Z" fill="#231f20"/>
 
        <path d="M162.12,362.58a1.59,1.59,0,0,1,.4,1.15v2.13h-.35v-2.1a1.33,1.33,0,0,0-.31-.94,1.15,1.15,0,0,0-.88-.32,1.32,1.32,0,0,0-1,.38,1.42,1.42,0,0,0-.37,1v1.94h-.35v-3.65h.33V363a1.38,1.38,0,0,1,.57-.6,1.67,1.67,0,0,1,.88-.22A1.46,1.46,0,0,1,162.12,362.58Z" fill="#231f20"/>
 
        <path d="M166.13,365.71a1.91,1.91,0,0,1-.76-.48l.16-.26a2,2,0,0,0,.7.44,2.39,2.39,0,0,0,.92.17,1.75,1.75,0,0,0,1.06-.26.82.82,0,0,0,.35-.7.75.75,0,0,0-.18-.52,1.35,1.35,0,0,0-.47-.3,7.75,7.75,0,0,0-.76-.22,6.12,6.12,0,0,1-.86-.26,1.29,1.29,0,0,1-.56-.39,1,1,0,0,1-.22-.7,1.2,1.2,0,0,1,.18-.65,1.33,1.33,0,0,1,.58-.48,2.48,2.48,0,0,1,1-.17,2.72,2.72,0,0,1,.8.12,2.25,2.25,0,0,1,.68.32l-.14.29a2.11,2.11,0,0,0-.64-.31,2.49,2.49,0,0,0-.7-.11,1.62,1.62,0,0,0-1,.28.85.85,0,0,0-.35.7.76.76,0,0,0,.19.53,1.27,1.27,0,0,0,.47.3,7.75,7.75,0,0,0,.76.22,7.84,7.84,0,0,1,.86.26,1.43,1.43,0,0,1,.55.38,1,1,0,0,1,.23.69,1.13,1.13,0,0,1-.19.65,1.28,1.28,0,0,1-.59.47,2.42,2.42,0,0,1-1,.18A2.77,2.77,0,0,1,166.13,365.71Z" fill="#231f20"/>
 
        <path d="M172.78,362.42a1.79,1.79,0,0,1,.65.66,2.12,2.12,0,0,1,0,1.92,1.79,1.79,0,0,1-.65.66,1.91,1.91,0,0,1-.93.23,1.62,1.62,0,0,1-.87-.23,1.54,1.54,0,0,1-.61-.63v2.19H170v-5h.34v.86a1.53,1.53,0,0,1,.61-.65,1.66,1.66,0,0,1,.88-.24A1.81,1.81,0,0,1,172.78,362.42Zm-.19,3a1.4,1.4,0,0,0,.53-.55,1.76,1.76,0,0,0,0-1.59,1.4,1.4,0,0,0-.53-.55,1.48,1.48,0,0,0-.76-.19,1.44,1.44,0,0,0-.75.19,1.32,1.32,0,0,0-.52.55,1.68,1.68,0,0,0,0,1.59,1.32,1.32,0,0,0,.52.55,1.45,1.45,0,0,0,.75.2A1.49,1.49,0,0,0,172.59,365.38Z" fill="#231f20"/>
 
        <path d="M175.24,365.65a1.68,1.68,0,0,1-.66-.66,2.1,2.1,0,0,1,0-1.91,1.74,1.74,0,0,1,.66-.66,1.94,1.94,0,0,1,1.87,0,1.79,1.79,0,0,1,.65.66,2,2,0,0,1,0,1.91,1.72,1.72,0,0,1-.65.66,1.94,1.94,0,0,1-1.87,0Zm1.69-.27a1.38,1.38,0,0,0,.52-.55,1.76,1.76,0,0,0,0-1.59,1.38,1.38,0,0,0-.52-.55,1.51,1.51,0,0,0-.76-.19,1.44,1.44,0,0,0-.75.19,1.32,1.32,0,0,0-.52.55,1.68,1.68,0,0,0,0,1.59,1.32,1.32,0,0,0,.52.55,1.45,1.45,0,0,0,.75.2A1.51,1.51,0,0,0,176.93,365.38Z" fill="#231f20"/>
 
        <path d="M182,362.58a1.59,1.59,0,0,1,.39,1.15v2.13H182v-2.1a1.29,1.29,0,0,0-.31-.94,1.14,1.14,0,0,0-.87-.32,1.31,1.31,0,0,0-1,.38,1.43,1.43,0,0,0-.38,1v1.94h-.35v-3.65h.34V363a1.36,1.36,0,0,1,.56-.6,1.7,1.7,0,0,1,.89-.22A1.46,1.46,0,0,1,182,362.58Z" fill="#231f20"/>
 
        <path d="M183.88,365.76a1.65,1.65,0,0,1-.62-.34l.16-.28a1.87,1.87,0,0,0,.58.32,2.24,2.24,0,0,0,.73.12,1.49,1.49,0,0,0,.82-.18.59.59,0,0,0,.26-.5.5.5,0,0,0-.14-.37.83.83,0,0,0-.36-.19,4.52,4.52,0,0,0-.58-.14,5,5,0,0,1-.7-.16,1.11,1.11,0,0,1-.45-.3.76.76,0,0,1-.19-.56.88.88,0,0,1,.36-.72,1.68,1.68,0,0,1,1-.28,2.35,2.35,0,0,1,.69.1,1.62,1.62,0,0,1,.56.26l-.16.28a1.73,1.73,0,0,0-.51-.25,2.33,2.33,0,0,0-.59-.08,1.27,1.27,0,0,0-.77.19.58.58,0,0,0-.26.49.5.5,0,0,0,.15.39.79.79,0,0,0,.36.2c.14,0,.34.09.6.14a7,7,0,0,1,.69.17,1.07,1.07,0,0,1,.44.28.77.77,0,0,1,.18.54.84.84,0,0,1-.38.73,1.79,1.79,0,0,1-1.06.27A2.63,2.63,0,0,1,183.88,365.76Z" fill="#231f20"/>
 
        <path d="M187.63,365.65A1.72,1.72,0,0,1,187,365a2,2,0,0,1,0-1.91,1.79,1.79,0,0,1,.65-.66,1.85,1.85,0,0,1,.94-.24,1.79,1.79,0,0,1,.93.24,1.74,1.74,0,0,1,.66.66,2,2,0,0,1,0,1.91,1.68,1.68,0,0,1-.66.66,1.79,1.79,0,0,1-.93.24A1.85,1.85,0,0,1,187.63,365.65Zm1.69-.27a1.4,1.4,0,0,0,.53-.55,1.76,1.76,0,0,0,0-1.59,1.4,1.4,0,0,0-.53-.55,1.58,1.58,0,0,0-1.5,0,1.34,1.34,0,0,0-.53.55,1.76,1.76,0,0,0,0,1.59,1.34,1.34,0,0,0,.53.55,1.51,1.51,0,0,0,1.5,0Z" fill="#231f20"/>
 
        <path d="M192.34,362.39a1.7,1.7,0,0,1,.87-.21v.34h-.08a1.21,1.21,0,0,0-1,.38,1.57,1.57,0,0,0-.34,1.06v1.9h-.35v-3.65h.34v.8A1.27,1.27,0,0,1,192.34,362.39Z" fill="#231f20"/>
 
        <path d="M194.29,365.76a1.73,1.73,0,0,1-.62-.34l.16-.28a1.87,1.87,0,0,0,.58.32,2.3,2.3,0,0,0,.74.12,1.43,1.43,0,0,0,.81-.18.57.57,0,0,0,.27-.5.47.47,0,0,0-.15-.37.79.79,0,0,0-.35-.19,4.52,4.52,0,0,0-.58-.14,5,5,0,0,1-.7-.16,1.08,1.08,0,0,1-.46-.3.81.81,0,0,1-.19-.56.86.86,0,0,1,.37-.72,1.67,1.67,0,0,1,1-.28,2.3,2.3,0,0,1,.69.1,1.53,1.53,0,0,1,.56.26l-.16.28a1.73,1.73,0,0,0-.51-.25,2.33,2.33,0,0,0-.59-.08,1.29,1.29,0,0,0-.77.19.58.58,0,0,0-.26.49.5.5,0,0,0,.15.39.91.91,0,0,0,.36.2c.14,0,.34.09.6.14a6.32,6.32,0,0,1,.69.17,1.07,1.07,0,0,1,.44.28.73.73,0,0,1,.19.54.87.87,0,0,1-.38.73,1.82,1.82,0,0,1-1.07.27A2.63,2.63,0,0,1,194.29,365.76Z" fill="#231f20"/>
 
        <rect y="317.34" width="297.64" height="37.27" fill="#00b1c5"/>
 
        <path d="M175.69,399.54a13.12,13.12,0,1,1,0-26.24,12.52,12.52,0,0,1,9,3.61l-2.53,2.53a9.12,9.12,0,0,0-6.46-2.56,9.54,9.54,0,0,0,0,19.07,8.75,8.75,0,0,0,6.62-2.62,7.47,7.47,0,0,0,2-4.51H176v-3.59h11.8a11.5,11.5,0,0,1,.2,2.24,11.85,11.85,0,0,1-3.11,8.39A12,12,0,0,1,175.69,399.54Z" fill="#557ebf"/>
 
        <path d="M206.9,391.1a8.45,8.45,0,1,1-8.45-8.45A8.34,8.34,0,0,1,206.9,391.1Zm-3.7,0a4.77,4.77,0,1,0-4.75,5.12A4.86,4.86,0,0,0,203.2,391.1Z" fill="#ea4535"/>
 
        <path d="M225.9,391.09a8.45,8.45,0,1,1-8.45-8.45A8.34,8.34,0,0,1,225.9,391.09Zm-3.7,0a4.77,4.77,0,1,0-4.75,5.12A4.86,4.86,0,0,0,222.2,391.09Z" fill="#f9bc15"/>
 
        <path d="M244,383.15v15.17c0,6.24-3.68,8.8-8,8.8a8,8,0,0,1-7.48-5l3.23-1.35a4.66,4.66,0,0,0,4.25,3c2.79,0,4.52-1.73,4.52-5v-1.21h-.13a5.77,5.77,0,0,1-4.45,1.92,8.47,8.47,0,0,1,0-16.9,5.86,5.86,0,0,1,4.45,1.89h.13v-1.38Zm-3.27,8c0-3-2-5.15-4.51-5.15s-4.51,2.18-4.51,5.15,2,5.09,4.51,5.09S240.68,394.07,240.68,391.12Z" fill="#557ebf"/>
 
        <path d="M250.66,374.21V399H247V374.21Z" fill="#36a852"/>
 
        <path d="M265.49,393.87l2.88,1.92a8.4,8.4,0,0,1-7,3.75,8.26,8.26,0,0,1-8.38-8.45c0-5,3.61-8.45,8-8.45s6.53,3.49,7.23,5.38l.39,1-11.3,4.67a4.3,4.3,0,0,0,4.1,2.56A4.82,4.82,0,0,0,265.49,393.87Zm-8.87-3,7.56-3.13a3.28,3.28,0,0,0-3.14-1.79A4.63,4.63,0,0,0,256.62,390.83Z" fill="#ea4535"/>
 
        <rect x="160.95" y="373.04" width="112" height="36" fill="none"/>
 
        <text transform="translate(84.43 102.23)" font-size="15" fill="#231f20" font-family="SourceSansPro-Regular, Source Sans Pro">Janua<tspan x="38.69" y="0" letter-spacing="0.02em">r</tspan>
 
            <tspan x="44.26" y="0">y 14 - 16 2022</tspan>
 
            <tspan x="44.26" y="0">y 14 - 16 2023</tspan>
 
        </text>
 
        <g id="Layer_2" data-name="Layer 2">
 
            <g id="emperor">
 
                <path d="M256.88,261.71a24.47,24.47,0,0,0,.69,2.7c.18.24,1.25,4.65,1.31,4.83s1.27,3.41,1.33,3.65.75,2.64.86,3.3.7,4.07.7,4.73.05,2.4.05,2.64v3.59a29.61,29.61,0,0,1-.11,3.65,28.94,28.94,0,0,1-.75,4,11.44,11.44,0,0,1-1.22,3.36c-.33.61-.63,1.2-.92,1.2a7.23,7.23,0,0,1-2-2.34c.34-2.76,1.55-4.62,1.84-8.51a85.54,85.54,0,0,0,0-8.63c-.15-2.46-1.14-12.94-1.32-13.3a15.43,15.43,0,0,1-.58-1.74A10.23,10.23,0,0,1,256.88,261.71Z" fill="#d2d3d4"/>
 
                <path d="M258.3,257.3s-.75,2.93-.75,3.42-.52.82-.23,2,1.15,4.32,1.38,5.1c.1.34.49,1.43.93,2.72.58,1.66,1.26,3.65,1.55,4.77.52,2,1.28,11.51.81,14.44s-1.55,9.18-2,10.08-.92,1-1.45.66a3.9,3.9,0,0,1-1.1-1.62,10.69,10.69,0,0,0-.75-1.32,10.24,10.24,0,0,0,.4-1.44c.12-.66.06.3.64,1.26s1.1,1.8,1.5,1.08a11.51,11.51,0,0,0,1.68-4.32c.06-1.56.87-3.78.81-6.65s-.23-8.21-.46-9.41a46.4,46.4,0,0,0-1.22-5.16c-.29-.53-2.26-7.6-2.42-8a9,9,0,0,1-.76-2.87c.12-.6,1-3.59,1-3.9A3.31,3.31,0,0,1,258.3,257.3Z" fill="#231f20"/>
 
                <path d="M246.39,245.73a33.05,33.05,0,0,1,4.59-.36c.44.18,2.69,1.62,2.69,1.62s2.69,2.87,2.86,4,.7,8.81.78,9.08a26.09,26.09,0,0,1-.43,2.6,13.09,13.09,0,0,0,0,2c.09.72.78,4.31.86,4.76s.61,3.87.7,4.31.35,3.87.35,4.23.34,3.59.34,3.86v4.77c0,.27-.52,4.41-.6,5.12s-1.82,6.11-1.74,6.38-2.69,6.2-2.69,6.83-1.55,2.6-2,3.05A24.68,24.68,0,0,1,247.6,310a16.91,16.91,0,0,1-4.33.54c-.61,0-7.73-.45-8.23-.45s-1.91-1-2.17-1.08-1-1.09-1.31-1.18a9.16,9.16,0,0,1-1.91-1.88,21.34,21.34,0,0,1-.61-2.07c-.17-.63-.69-4.14-.78-4.59s-.43-3.23-.6-3.77.17-6.29-.09-7.28,1.91-8.53,2.08-9.34,3.64-8.72,3.47-10.25.87-11.59.95-12.58,2.34-4.58,3.12-5.3S244.22,246.09,246.39,245.73Z" fill="#fff"/>
 
                <path d="M254.8,249.32s-2-2.33-1.48-1.7-1.47-.81-1.47-.81-.52.36-.6.09-.27.28-.44.63-.6-.63-.6-.63l-.44.62-.69-.43-.35,1.08-.69-.54.43,1.08h-.95l.61.62-1.22-.17.35,1.07-.87-.35.09.71-.78-.19.34.81h-.69l.26.39.27.42-.69-.28.61.81-.61-.09-.61-.28-1-1.78.86-3.14,2.69-1.71,2.88-.09,2,.27,2.69,2.34Z" fill="#6e6f72"/>
 
                <g clip-path="url(#clip-path)">
 
                    <g clip-path="url(#clip-path-2)">
 
                        <image width="111" height="129" transform="translate(243.01 246.45) scale(0.13)" xlink:href="data:image/png;base64,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" style="isolation:isolate"/>
 
                    </g>
 
                </g>
 
                <path d="M228.52,288.06a34.68,34.68,0,0,0-.4,6.17c.23,1.86.4,4.25.46,4.67s.06,2,.12,2.58a27.83,27.83,0,0,0,.63,3.36,6.45,6.45,0,0,0,2,2.7,9.68,9.68,0,0,1,1.12.91c.49.45.78.79,1,.82l2,.44a3.13,3.13,0,0,1-1.8-.07,18.61,18.61,0,0,1-4-3.42c-.58-.9-1.11-4.26-1.22-5.16s-1.33-4.91-1.45-5.93a23.74,23.74,0,0,1-.11-4C227,290.53,227.77,289.91,228.52,288.06Z" fill="#231f20"/>
 
                <path d="M253.79,277.25c0,.14.39.28.61,0a11.94,11.94,0,0,0,1.3-3.55,16,16,0,0,0-.35-5.76,12.17,12.17,0,0,1-.17-3.19c.08-.45,2-3.91,2.25-4.45a16.2,16.2,0,0,0,.87-3.06c0-.12,0-.33.05-.61a9.72,9.72,0,0,0-.44-3.75,22.49,22.49,0,0,0-2.56-4.76c-.35-.35-1.56-1.22-1.86-1.62a5.3,5.3,0,0,0-2.74-1.35,4.8,4.8,0,0,0-1.6.09c-.3.05-.52,0,1.46.48a6,6,0,0,1,3.93,3.19,13,13,0,0,1,.59,2.9c.13.63.1,3.93-1.89,5.64a4.53,4.53,0,0,1-2.52,1.53c-.55,0-2-1.24-2.65-1.29-.36,0-.65.18-.83.72a2.77,2.77,0,0,0,.35,1.8c.09.17.25.58.41,1,.09.24.18.49.28.71.27.5-.83.16-1.68-.46a7,7,0,0,1-1.56-1.89,3.76,3.76,0,0,0,1.6,2.34,12.88,12.88,0,0,1,3.86,3.42,31.08,31.08,0,0,1,2.91,5.08,6.5,6.5,0,0,1,.65,1.84,10.9,10.9,0,0,1,0,2C254.05,275,253.88,276.08,253.79,277.25Z" fill="#231f20"/>
 
                <path d="M251.7,264.58s1.66,2.48,1.86,3a15.91,15.91,0,0,1,1.22,3.28,9.51,9.51,0,0,1,0,3.1c-.24,1.14-.35.95-.35.95a11.46,11.46,0,0,0-.43-3.78c-.48-1.44-1.3-2.88-1.57-3.55S251.32,264.53,251.7,264.58Z" fill="#f15b2b"/>
 
                <path d="M251.92,262c.08-.14.09-.45.4-.22s.55.36.6.76,0,.68-.13.77-.69-.18-.82-.32A1.51,1.51,0,0,1,251.92,262Z" fill="#595a5c"/>
 
                <path d="M252.36,262.28a.83.83,0,0,1,.26.36c0,.18,0,.45-.09.41a.66.66,0,0,1-.39-.36,2.28,2.28,0,0,1,0-.45S252.27,262.15,252.36,262.28Z" fill="#231f20"/>
 
                <path d="M251.94,245.62s.31.52-.51.36a7.47,7.47,0,0,0-3.65.12,2.87,2.87,0,0,0-1.73,2.64c-.12,1.68-1,1.38-1.5,2.34-.24.48,1.1,3.17,1.1,3.17s-2.78-3.06-5.73-2.51c-.94.17-3.18,1.55-4.63,5.33-.57,1.48-1.1,8.51-1.1,9.11s-.35,5.63-1.33,8c-.24.55-3,9.1-3.7,11.75s-2.55,8.62-2.9,9.35a15,15,0,0,1-1.61,3.11c-.46.36.23,1-.47.36s-.81-2.88-.69-3.72.7-4.31.81-5-.34-2.87,0-4.67.06-5.27,1-8.45c1.37-4.5,4.1-6,5-9.35a94.93,94.93,0,0,0,1.56-9.71,20.9,20.9,0,0,1,4.16-8.57c1.85-2.28,3.35-4.2,5.09-4.44a14,14,0,0,1,4-.06c.92.12,2.6.12,3.75.18A5.4,5.4,0,0,1,251.94,245.62Z" fill="#424143"/>
 
                <path d="M244.6,254.91c.35.36,1,1.5,1.56,1.26.69-.32-.28-1.74-.7-2.34a6.55,6.55,0,0,0-2-1.68c-.46-.17-2.37-1-3.41-.59a6.12,6.12,0,0,0-2.83,1.73,9.6,9.6,0,0,0-2.32,3.54,30.41,30.41,0,0,0-.86,5.93c0,1.14-.28,5-.37,5.8s-.55,4.63-.55,4.87a15.79,15.79,0,0,0,1.22-4c.18-1.31.34-3.66.4-5a30.14,30.14,0,0,1,.64-5.27,9.39,9.39,0,0,1,1.85-4.26c1.27-1.38,1.89-1.66,2.54-1.74a5.16,5.16,0,0,1,3.18.6A4.26,4.26,0,0,1,244.6,254.91Z" fill="#231f20"/>
 
                <path d="M253.16,306.82s.25-.21,1.27.24a2.94,2.94,0,0,1,1.79,1.43,16.66,16.66,0,0,1,.58,1.68,15,15,0,0,1,.27,1.74c0,.6-.3,1.38-.4,1.08s-.29-.78-.64-.9c-.62-.21-.57-.72-.86-1s.17.24-.06,1-.35.66-.58.9-.35.6-.75.66-.17-.12-.12-.66-.34-1.93-.34-1.26a2.9,2.9,0,0,1-.64,1.08,1.18,1.18,0,0,1-.92.36s-.41.66-.76.72,0-.06-.17-.83.12-1.2-.52-1.68.58,0-.63,0-3.13-.18-3.36-.77,3.36-.72,4.57-1.74,2.25-2.1,2.25-2.1" fill="#424143"/>
 
                <path d="M256.83,264.75c.31,2.71,1.18,5.37,1.47,8.1.32,3,.55,6,.7,9a35.82,35.82,0,0,1-.55,9.81,83.21,83.21,0,0,1-3.57,11.12c-.8,2.05-1.49,3.91-3.42,5.14a15.76,15.76,0,0,1-8.45,2.25,1.27,1.27,0,0,0,0,.67,16.07,16.07,0,0,0,8.09-2c1.91-1.11,2.65-2.56,3.46-4.53a75.82,75.82,0,0,0,3.76-11.38,32.86,32.86,0,0,0,.85-8.95c-.13-3.14-.21-6.28-.57-9.4-.17-1.46-.31-2.92-.55-4.37-.34-2-.94-4-1.17-5.95,0-.26-.06.38-.05.48Z" fill="#231f20"/>
 
                <path d="M232.78,308.9c-.55-.29-.35,1.26.72,2.23a5.42,5.42,0,0,0,3.24,1.2,2.71,2.71,0,0,1,1.79.6c.58.36,1.21.3,1.33.66s.63-.66.35-1.14-.35-.78-.53-.84.64,1,1.11,1.26,1.15.55,1.38.42.63-.48.86,0,.41-.12.38-.51a.55.55,0,0,0-.14-.33,9.24,9.24,0,0,1-.87-.9,10.69,10.69,0,0,1,2,1.2c.18.3.29-.6.18-1.08s-.53-.71-.87-1-1-1.43-1.74-1.67-1.38-.09-1.67-.24a5.26,5.26,0,0,0-4.11.24A3.3,3.3,0,0,1,232.78,308.9Z" fill="#424143"/>
 
                <path d="M240,312.21a4.18,4.18,0,0,0-.55-1,2.32,2.32,0,0,0-.78-.48l-.67-.12c-.05,0-.27-.06-.4-.09a.49.49,0,0,1-.35-.36,1,1,0,0,0,.55.24,4.57,4.57,0,0,1,1.33.28A2,2,0,0,1,240,312.21Z" fill="#231f20"/>
 
                <path d="M240,309.78l.67.23.32.07c.34.06,1.07.14,1.21.57a6.12,6.12,0,0,0,.35.93c-.44-.39-.35-.66-.55-.83a2.89,2.89,0,0,0-1.13-.45C240.52,310.19,240.15,309.84,240,309.78Z" fill="#231f20"/>
 
                <path d="M253.75,308.85a2.06,2.06,0,0,1,1.08.72,3.52,3.52,0,0,1,.24.9,1.54,1.54,0,0,1,.09.6,2.8,2.8,0,0,0-.06-1.41C254.65,308.9,254.05,309,253.75,308.85Z" fill="#231f20"/>
 
                <path d="M252.13,309.75s.9,0,1.08.36a1.51,1.51,0,0,1,.13,1.68c-.31.59.24-.81-.21-1.35A3.38,3.38,0,0,0,252.13,309.75Z" fill="#231f20"/>
 
            </g>
 
            <g id="king">
 
                <path d="M262.32,284.2s.69,5.49.78,5.93-.05,3.2-.05,3.46-.39,3-.39,3-.52,2-.6,2.21a4.82,4.82,0,0,1-1.43,1.08c-.18,0-1.25.39-1.56-.17s-1.6-1.73-1.65-2.6a18,18,0,0,1,.52-3.72c.12-.35,1.21-3,1.29-3.29s1-2.94,1.17-3.2,1.21-2.94,1.3-3.24,0-1.78,0-1.95A24.25,24.25,0,0,1,262.32,284.2Z" fill="#e6e7e7"/>
 
                <path d="M262,277s-.69,5.31-.8,6.12-1.73,4.84-2,6a7.08,7.08,0,0,1-.36,1.07c-.06.17-.14.34-.21.51s-.12.28-.18.43a25.66,25.66,0,0,0-1.44,4.21,6.92,6.92,0,0,0,1.13,5.17c.72,1.07,1.13,1.51,1.47,1.43a5.63,5.63,0,0,0,2.25-2.33c.15-.27.65-1.93.69-2.07a14.86,14.86,0,0,0,.23-2.66s-.62,3.42-1.48,3.77-.77-.83-.92-1.82a19.28,19.28,0,0,0-.55-2.21,5.05,5.05,0,0,0-.52,1.3,2.16,2.16,0,0,1-.43.91l-.3-.17-.55.65a4.4,4.4,0,0,1-.09-2,16.53,16.53,0,0,1,1.3-4.11c.19-.43,2.3-4.93,2.76-5.28s-.13-1.49,0-1.84S261.93,277.35,262,277Z" fill="#020202"/>
 
                <path d="M280.79,306.48a1.89,1.89,0,0,0,0,1.08,5.86,5.86,0,0,1,.13,1.77,2.11,2.11,0,0,1-.65,1.52,2.41,2.41,0,0,1-1.3.65c-.43,0-1,.64-1.43.77s-.34.44-.65.48a1.74,1.74,0,0,0-.86.65c0,.09-.12-.23,0-.65a2.6,2.6,0,0,1,.34-.83,2.12,2.12,0,0,1,.39-.55,3.77,3.77,0,0,0-1,.78,2,2,0,0,1-1.51.78,2.94,2.94,0,0,0-1.18.09,2.57,2.57,0,0,0-1.16.77,3.94,3.94,0,0,1,.34-1.38,3.61,3.61,0,0,1,.95-1c.35-.3-.51.39-.69.55a1.62,1.62,0,0,1-.65.26,1.77,1.77,0,0,0,.48-.78,1.34,1.34,0,0,1,.65-1,13,13,0,0,1,1.82-.61,3.45,3.45,0,0,0,1.68-1.65c.26-.65.13-1.66.3-1.86a2.81,2.81,0,0,1,1.43-.61c.35,0,1.78-.13,1.94.09A7.58,7.58,0,0,0,280.79,306.48Z" fill="#818285"/>
 
                <path d="M272.27,312.27a1.73,1.73,0,0,1-1,.4,4.79,4.79,0,0,0-1.55.55c-.47.25-1.38.86-1.38,1.08s.3-1.38.65-1.51.69-.09.86-.55a2.85,2.85,0,0,1,.48-.87,2.59,2.59,0,0,0-1.38.78,4.12,4.12,0,0,1-1.26.83,5.14,5.14,0,0,0-1.12.51,4.37,4.37,0,0,0-.61.74c-.08.13-.39-.3-.13-.78a3.28,3.28,0,0,1,.48-.69,1.39,1.39,0,0,1,.26-.95c.35-.52-.26.43-.43.47a3,3,0,0,0-1.13.55c-.62.52-.52.09-.83.18a3.25,3.25,0,0,0-.9.52,1.29,1.29,0,0,1,.21-1.3c.44-.3.22.09.56-.22s.3-1.17,1.3-1.34a3.49,3.49,0,0,0,1.42-.52c.44-.3,1.43-.6,1.69-.83a1.26,1.26,0,0,0,.39-1.12c0-.52-.35-1.82-.35-1.82l1.26-.39a2.76,2.76,0,0,1,1.38-.21c.3.13,1.56-.55,1.56-.55a9.66,9.66,0,0,0,.08,1.42c.05.31.26.61.05,1a1.37,1.37,0,0,0-.22.83,3.38,3.38,0,0,0,.43,1c.39.83.2.53.35.65Z" fill="#818285"/>
 
                <path d="M268.81,306.56c0,.18-.39.22-.26.56.06.14-.39-.44-.39-.44l-.39-.08s-.08.39-.17-.55a4.82,4.82,0,0,0-.78-2.17c-.34-.55-1.17-1.29-1.81-2.12a14.49,14.49,0,0,1-2.08-2.89,12.71,12.71,0,0,1-.74-3.9,44.32,44.32,0,0,1,.43-4.63c.08-1.47-.87-8-.87-8.61a14.35,14.35,0,0,1,.22-3.59,28.28,28.28,0,0,1,2.51-6.92c1.21-2.07,3.55-5.45,3.72-5.88a24.78,24.78,0,0,0,1.08-2.76,10.39,10.39,0,0,0,.22-1.56,18.64,18.64,0,0,0,2.12,3.46c.82.74,5.62,4.37,6,5.15a27.69,27.69,0,0,1,.65,5.19c0,.65.47,4.2,1.08,4.89a32.87,32.87,0,0,1,2.55,4.07,22.44,22.44,0,0,1,1.21,2.81c.13.52,1.17,4.67,1.26,5.15a22.13,22.13,0,0,1,.38,2.42,21.61,21.61,0,0,1-.9,4.37c-.61,2-1.86,6.1-3,7.79-.47.68-.48-.17-.48-.17l-.47.3-.35-.39s-.17.52-.26.34.09-.47-.08-.17-.39.7-.48.3,0-.51-.09-.38-.17.55-.3.3-.23,0-.39-.05a2.57,2.57,0,0,0-.83.05l-.17,0a3.38,3.38,0,0,1-.34-.62c-.13-.3-.09-1.09-.17-1.34s-.83.9-1.47,1a4.72,4.72,0,0,1-2-.13c-1.44-.21-.44-.17-.35,0l.08.18a2,2,0,0,1-.6.38,1.93,1.93,0,0,1-1,.13c-.26,0-.55-.08-.74.05s-.3-.13-.47.08-.26.26-.39.22.13-.26-.13,0A.79.79,0,0,1,268.81,306.56Z" fill="#fff"/>
 
                <path d="M269.58,261.14s2.51.3,3.64-.3,1.38-.52,1.51-1.3-.91-2.16-.26-2.94,1.26-.74,1.69-.44,1.21.91,1.17,1.61a3,3,0,0,1-.48,1.9,6.36,6.36,0,0,1-2,1.38,8.12,8.12,0,0,1-2.17.86A4.81,4.81,0,0,1,269.58,261.14Z" fill="#f15b2b"/>
 
                <path d="M259.51,254.74s.43-.87,2-.52c.39.08,2.73.39,3,.39a18.89,18.89,0,0,1,3.29.83c.39.22,1.82.82,1.3,1.73a1.5,1.5,0,0,1-1.91.17,7.3,7.3,0,0,0-.95-.61,23.75,23.75,0,0,0-2.85-1.56A9.29,9.29,0,0,0,259.51,254.74Z" fill="#f15b2b"/>
 
                <g clip-path="url(#clip-path-3)">
 
                    <g clip-path="url(#clip-path-4)">
 
                        <g clip-path="url(#clip-path-4)">
 
                            <image width="82" height="63" transform="translate(265.79 260.49) scale(0.13)" xlink:href="data:image/png;base64,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" style="isolation:isolate"/>
 
                        </g>
 
                    </g>
 
                </g>
 
                <path d="M270.23,261.31a7.19,7.19,0,0,0,2.23.11,3.78,3.78,0,0,0,1.8-1,1.36,1.36,0,0,0,.55-1.34c-.14-.65-.43-1.43-.43-1.73s.3-1,.69-1.13.74-.26,1.17,0a7.65,7.65,0,0,1,1,1s.26-1.26-2-2.47a3.72,3.72,0,0,0-2.73-.43,6.3,6.3,0,0,0-1.86.48,2.25,2.25,0,0,1-1.38.08c-.48-.13-2-.26-3.25-.52a26.94,26.94,0,0,0-5.1-.78,1.67,1.67,0,0,0-1.69,1c-.26.82.61-.35,1.66-.35.66,0,2.56.3,3.16.39a23.24,23.24,0,0,1,3.17.77c.61.22,1.52.44,1.78.91a.53.53,0,0,1-.26.83,1.35,1.35,0,0,1-1.25,0c-.55-.24-2.64-1.51-2.64-1.51a16.71,16.71,0,0,1,2.68,2.16c.26.51.86.91,1,1.17l1,1.93A1.11,1.11,0,0,0,270.23,261.31Z" fill="#231f20"/>
 
                <path d="M259.11,255a2.43,2.43,0,0,1,1-.17,12.42,12.42,0,0,1,2.42.3,4.81,4.81,0,0,1,1,.26l.87.35a16.7,16.7,0,0,1,1.7,1,13.48,13.48,0,0,1,1.47,1.25l-.09-.73a17.55,17.55,0,0,0-3.5-2,10.5,10.5,0,0,0-3.12-.83C260.68,254.43,259,254.43,259.11,255Z" fill="#231f20"/>
 
                <path d="M269.39,261.05a15.4,15.4,0,0,0,2.29.83,4.5,4.5,0,0,0,2.08-.32c.47-.26,1.12-.61,1.51-.78a4.94,4.94,0,0,0,1.52-1,5.94,5.94,0,0,0,.52-1c.1-.46.17-.26.17-.26s.43.21.32,1.06a15.3,15.3,0,0,0-.17,2,7.91,7.91,0,0,0,.71,2.31c.31.43,1.78,2.07,2.08,2.52a9.84,9.84,0,0,1,1,2c.17.56.17,1.69.35,2.25a9.57,9.57,0,0,0,1.21,2.25,11.88,11.88,0,0,1,2.12,3.42c.34,1.26,1.45,4,1.45,4.39s.52,3.55.52,4.24-.26,6.88-.26,7.45.84,5.75.88,6,.22.38.09.6-.32,2.4-.71,1.84a26.42,26.42,0,0,1-2.34-4c-.26-.87-1.1-5-1.28-6s-.08-3.42-.47-4.24-1.52-4-1.82-4.33-2.57-2.3-2.86-3.24c-.95-3.12-.55-6.45-.73-7.66s-2.16-3.55-2.45-3.81-1.74-1.46-2.21-1.78c-1.38-.95-1.47-1.29-2.55-3.29-.49-.85-1.31.28-1.31.28l.26-1.32Z" fill="#595a5c"/>
 
                <path d="M269.39,261.22c1.92.83,3.23,1.07,5.16.07a6.71,6.71,0,0,0,2.24-1.35c.21-.25.4-1.16.69-1.29s.22,1.49.19,1.78a5.94,5.94,0,0,0,.57,3.44c.86,1.6,2.46,2.63,3.12,4.41.32.88.2,1.85.52,2.73a7.93,7.93,0,0,0,1.18,2.08,18.22,18.22,0,0,1,1.63,2.35,21,21,0,0,1,1.1,3,25.73,25.73,0,0,1,1.17,9.9,36.81,36.81,0,0,0,.34,7.42,13.83,13.83,0,0,1,.42,3.49,3,3,0,0,1-.24,1.1c-.32.53-.14.38-.55,0a10,10,0,0,1-1.54-2.46,17.22,17.22,0,0,1-1.48-5.15c-.37-1.85-.36-3.72-.68-5.56a20,20,0,0,0-1.63-4.35c-.62-1.39-2.08-2.14-2.93-3.4-1.59-2.39-.52-5.59-1-8.23a8.34,8.34,0,0,0-2.75-4c-.79-.68-1.65-1.27-2.46-1.93a10.35,10.35,0,0,1-1.92-2.7c-.29-.43-.4-.66-.94-.4-.1.05-.69.49-.45.7a11,11,0,0,1,.3-1.72c0-.05,0-.36,0-.23-.06.58-.19,1.15-.3,1.72,0,.11,0,.21,0,.31.81-1,1.31-.22,1.79.65a6.09,6.09,0,0,0,1.24,1.73c1.06,1,2.35,1.66,3.34,2.73a12.19,12.19,0,0,1,1.62,2.21,7.16,7.16,0,0,1,.59,3.64c0,1.81,0,4.17.93,5.77.72,1.21,2.12,1.91,2.81,3.11A22.31,22.31,0,0,1,283.1,287c.5,1.58.28,3.42.59,5.05s.57,3.23,1,4.77a8.47,8.47,0,0,0,.92,1.89c.3.53.83,1.84,1.38,2.19.36.22.23.22.47-.19a5.06,5.06,0,0,0,.34-1.55,6.73,6.73,0,0,0-.25-1.93c-.24-1.54-.58-3.11-.69-4.66-.18-2.54.3-5.12.24-7.66a24.75,24.75,0,0,0-1.61-7.62,12.75,12.75,0,0,0-1.27-2.94c-.41-.63-.91-1.19-1.34-1.79-1.31-1.81-1.05-4-2.17-5.84-1-1.63-2.6-2.68-3-4.63-.26-1.37.43-2.63-.3-3.81h0c-.17.07-.22.5-.28.64a2.67,2.67,0,0,1-1.06,1.24,13.29,13.29,0,0,1-2.63,1.34c-1.47.53-2.76,0-4.09-.61C269.4,260.89,269.33,261.19,269.39,261.22Z" fill="#231f20"/>
 
                <path d="M277.09,256.6s.76.52.71,2.64c-.15-.39-.32-.37-.39-.33a2.06,2.06,0,0,1-.8,1.08,3.21,3.21,0,0,0,.63-1.93,3.82,3.82,0,0,0-.47-1.27S277.05,257,277.09,256.6Z" fill="#231f20"/>
 
                <path d="M280,276.46c-.22-.67.69,2.33.78,3.11s.33,1.67.41,2.76a27.83,27.83,0,0,0,1.93,5.9c.28.46.44,4.76.7,5.45s.6,3.64.95,4.16a19.71,19.71,0,0,0,2.33,3c.26,0-.86-1.56-1.38-2.59a40.87,40.87,0,0,1-1.55-5.37c-.18-.78-.43-5.79-.69-6.49s-1.56-3.29-1.73-4S280.18,277,280,276.46Z" fill="#231f20"/>
 
                <path d="M269.41,304c.51.38.95.88,1.46,1.24.74.52,1.46.31,2.28.51a2.77,2.77,0,0,0,1.82.09c.55-.22,1-.72,1.54-1v-.65c-.48.54,0,2.05.2,2.56h0a3,3,0,0,1,.78-.22c.22,0,.61.33.64.33s.25-.08.28-.08c-.58,0,.79-.28.37-.08l.16,0c.28-.08.19-.14.44-.17,0,0,.15.16.19.16s.25-.12.39-.09.2.25.3.26c-.09,0,.62-.13.47,0,.28-.17.3-.6.43-.89a25.2,25.2,0,0,0,2-5c.23-1.07.65-2.1.93-3.15a15.45,15.45,0,0,0,.3-2.54c0-.1,0-.73-.05-.47a16.42,16.42,0,0,1-.63,3.55c-.24.76-.46,1.51-.63,2.29a16.49,16.49,0,0,1-1.17,3.09c-.24.55-.55,1.07-.83,1.61a3.73,3.73,0,0,0-.16.35c-.19.39-.09.49-.46.39h0c-.24.31-.25,0-.55-.1a.62.62,0,0,0-.28.14.75.75,0,0,1-.36-.3c-.46.07-.27.42-.78.16h0c-.28.46-.35.37-.5,0h0c-.22.06-.4-.05-.62,0s-.44.19-.55.16c-.28-.08-.51-1-.34-1.21s0-.65,0-.66c-.55.25-1,.74-1.54,1a2.69,2.69,0,0,1-1.81-.09c-.83-.19-1.55,0-2.28-.51-.52-.36-.95-.86-1.46-1.25.06.05-.14.56,0,.67Z" fill="#231f20"/>
 
                <path d="M268.64,306.78c0,.34.11.67.16,1,.14,1.18-.28,1.35-1.16,1.79a11.16,11.16,0,0,1-1.75.83,2.29,2.29,0,0,0-1.49.79s-.19.41-.26.49-.35.17-.53.34a1.4,1.4,0,0,0-.47.93,1,1,0,0,0,.17.8h0c.4-.6.91-.49,1.54-.67a10.37,10.37,0,0,0,1.53-.76c.06,0,0-.32,0-.33a8,8,0,0,1-2.06.89c-.18,0-.66.21-.81.22a1.2,1.2,0,0,0-.13.21l-.11-.51c.15-.54.55-.44.86-.7h0a1.48,1.48,0,0,1,.49-.82c.55-.52,1.27-.48,1.93-.77.87-.38,2.21-.8,2.34-1.86a10.91,10.91,0,0,0-.23-2.05c0-.21,0,.11,0,.16Z" fill="#231f20"/>
 
                <path d="M269.93,309a4.4,4.4,0,0,0-2.05,1.27c-.51.54-1.24.93-1.46,1.66-.11.34,0,.78-.24,1.08-.1.13-.3.2-.37.31a.77.77,0,0,0-.1.25c-.07.28.06.74.33.83v-.05c.08-.83,1.62-1.19,2.27-1.5a3.7,3.7,0,0,0,.95-.76,6.1,6.1,0,0,1,1.14-.72c.06,0,0-.32,0-.33a29.51,29.51,0,0,1-2.62,1.72,6.33,6.33,0,0,0-1.32.61,4.29,4.29,0,0,0-.45.69c-.46,0,.16-.75.23-.92.14-.35.08-.79.24-1.14a2.34,2.34,0,0,1,.75-.75c.5-.41.86-1,1.38-1.37a4.67,4.67,0,0,1,1.3-.55c.05,0,0-.33,0-.33Z" fill="#231f20"/>
 
                <path d="M273,305.5a1,1,0,0,1-.69,0h0c-.31.41-.3.83-.3.22,0,0,0-.33,0-.33-.27.28-.35.79-.65.05h0s-.31.2-.15.21-.47.21-.27.11c.41-.2-.46-.08-.19-.07-.14,0-.45.55-.46,0a1,1,0,0,0-.05-.24s-.38,1-.46.41c0,0,0-.13,0-.08-.25.51-.48.51-.78.15,0,0,0,0,0,.05-.05.23,0,.46-.18.13h-.1c-.45,1.08-1.36-2.13-1.69-2.52a38.29,38.29,0,0,1-3.64-4.4c-1.81-3.06-.43-6.92-.59-10.27-.18-3.56-1.38-7-.64-10.57a28.22,28.22,0,0,1,3.31-8.11c.81-1.43,1.77-2.65,2.69-4a9.73,9.73,0,0,0,1.2-3.31c.09-.35.49-1.48.28-1.84,0-.08.11-.49,0-.64h0s0,0,0,0c-.47,2.17-.63,4.1-2.07,5.88a25.52,25.52,0,0,0-2.2,3.42,28.5,28.5,0,0,0-3.28,8.33c-.57,2.9-.09,5.63.42,8.46a24.51,24.51,0,0,1,0,6.79,12.28,12.28,0,0,0,0,3.73,9.89,9.89,0,0,0,.75,2.54,19.8,19.8,0,0,0,1.86,2.48c.6.83,1.56,1.52,2.11,2.38s.31,1.9.87,2.61h0c.28-.07.25,0,.49.08,0,0,0,0,0-.05.17-.31.28-.35.32-.14,0,0,0,0,0,0,.11-.55.11-.09.27-.17-.19.11.65,0,.37,0s.37-.31.24-.27.23.3.25.3h0a2.16,2.16,0,0,0,.21-.71c.06,0,0,.4.06.41s.36-.15.46-.13.19.13.4.25h0c.21-.48.28-.27.57.05h0c.09-.23,0-.28.29-.55l0-.34c0-.4-.06.16,0,.25.07.26,0,.33.25.5h0c.13-.32.52-.21.85-.27.09,0,0-.67,0-.67Z" fill="#231f20"/>
 
                <path d="M273.48,310.08c-.11-.27-.21-.55-.34-.82a5.58,5.58,0,0,1-.34-.56c-.23-.6.07-.67.18-1.1a1.09,1.09,0,0,0,0-.4,2.66,2.66,0,0,0,0-.28c0-.15-.35-1.7-.17-1.23,0-.05.05-.23,0-.32a.05.05,0,0,0,0-.06h0a2.43,2.43,0,0,0,0,1c0,.2.09.37.12.55a3.56,3.56,0,0,1-.19,1.21c-.11.83.5,1.54.81,2.28,0-.05,0-.24,0-.32Z" fill="#231f20"/>
 
                <path d="M273.48,310.41a.92.92,0,0,0,0-.33A.62.62,0,0,0,273.48,310.41Z" fill="#231f20"/>
 
                <path d="M271.45,310.16c-1.11.32-1.18,1.38-1.77,2.19-.25.35-.55.21-.83.51a3.1,3.1,0,0,0-.52,1.35c0,.06,0,.27,0,.3a3,3,0,0,1,2.23-1.38,15.51,15.51,0,0,0,1.91-.86c.06,0,0-.32,0-.33a12.18,12.18,0,0,1-2.1.9,3,3,0,0,0-1.52.66,2,2,0,0,0-.27.31s-.48.71-.25.66c0,0,.22-.74.26-.83a1.32,1.32,0,0,1,.49-.65c.33-.16.41,0,.64-.38.52-.8.67-1.81,1.71-2.11.05,0,0-.33,0-.33Z" fill="#231f20"/>
 
                <path d="M276.71,306.81a3.09,3.09,0,0,1-1.51,2.73c-.59.34-1.38.36-2,.66a1.35,1.35,0,0,0-.79.86,7,7,0,0,1,0,.92v.32c.53-1.07,1.63-1.12,2.63-1.43a3.46,3.46,0,0,0,2.17-1.77c0-.08,0-.27,0-.32a3.76,3.76,0,0,1-2.8,1.91,2.7,2.7,0,0,0-2,1.29c0,.07,0,.31,0,.33.16-.16,0-.46,0-.65.15-1.42,1.62-1.25,2.6-1.74a3.33,3.33,0,0,0,1.66-3.34c0-.13,0,.19,0,.23Z" fill="#231f20"/>
 
                <path d="M280.69,306.42c-.17,1.41.6,3.53-.68,4.45-.73.52-1.64.57-2.34,1.15a5.55,5.55,0,0,1-.95.54c-.2.11-.49.6-.69.63s-.1.22,0-.31a1.44,1.44,0,0,1,.15-.61,10,10,0,0,1,1.38-1.38c.49-.46.86-.75.75-1.48a.76.76,0,0,0,0,.26c.1.85-1.36,1.25-1.92,1.74a4.48,4.48,0,0,1-1.49,1.15c-.83.3-1.86,0-2.5.64,0,0-.4.59-.41.59-.51-.09.44-1.42.53-1.52s0-.27,0-.33a2.5,2.5,0,0,0-.57,2.21h0c.8-1.45,2.61-.9,3.89-1.84a14.09,14.09,0,0,1,1.38-1.18c.41-.24.91-.38,1.14-.81,0-.06-.08-.58,0-.43-.09-.18.3-.2-.19.14a11.87,11.87,0,0,0-1.6,1.57,2.22,2.22,0,0,0-.71,1.92l0,.16a10.9,10.9,0,0,1,1.73-1.26,3.93,3.93,0,0,1,1.1-.69,5.23,5.23,0,0,0,1.54-.69c1.2-1.1.34-3.14.48-4.41,0-.05,0-.37,0-.24Z" fill="#231f20"/>
 
                <path d="M271.53,256.86c.06-.12.25-.16.55-.13a1.09,1.09,0,0,1,.56.15,1.42,1.42,0,0,1,.55.45c.15.23.09.26.06.44s-.27.27-.69.19a1.19,1.19,0,0,1-.65-.37A.89.89,0,0,1,271.53,256.86Z" fill="#939598"/>
 
                <path d="M272.07,257.07a.85.85,0,0,1,.44.09,1,1,0,0,1,.23.28.12.12,0,0,1,0,.17.11.11,0,0,1-.1,0,.71.71,0,0,1-.55-.35C272,257.18,271.94,257.09,272.07,257.07Z" fill="#231f20"/>
 
            </g>
 
            <g id="topknot">
 
                <path d="M217.46,312.81a5.36,5.36,0,0,1-.72,1.8c-.42.47-.77.6-1,1.26s-.66.65-.56,1.43,0,1.08.12,1.2.6-.12.9-.55.06-.72.6-1.2.66-.67,1-.28a2.08,2.08,0,0,1,.48,1.38c.06.72-.06,1.25.24,1.44s.12.89.42.47.12-.66.42-1.13.72-.36.66-1.26-.36-1.08-.12-1a2.07,2.07,0,0,1,.78.3c.6.3.48.42.9.36s.6,0,.36-.36.18-.24-.42-.6a2.29,2.29,0,0,1-1.2-1.26,2.88,2.88,0,0,1-.3-2.26C220.16,311.92,217.46,312.81,217.46,312.81Z" fill="#d17f58"/>
 
                <path d="M231,314.13a3.45,3.45,0,0,1-.83,1.5c-.4.3.12-.48-.42.29s-.36-.17-.55.79-.72,1.31.12.82.55.06,1.44-.48,1-1,1-1-.48-.12-.12.6-.06.48.48.83.3-.12.66.3.59.66.55.18-.06-.66.12-.78.66-.18.55-.48-.66-.06.12.3a4.45,4.45,0,0,0,1.32.48c.54.12.78-.24,1,.24l.24.48s.78-.54.54-1.26,0-1.08-1-1.26-1.14-.06-1.62-.66a7.7,7.7,0,0,1-.9-1.67,15.19,15.19,0,0,0-1.92-.24A5.23,5.23,0,0,0,231,314.13Z" fill="#d17f58"/>
 
                <path d="M216,293.39s-1,.3-1.32.36a13.39,13.39,0,0,1-2.7-.48,3.43,3.43,0,0,0-2.28.18c-.54.42-3.59,2.28-3.83,2.4a1.51,1.51,0,0,1-1.33-1,10.46,10.46,0,0,1,2-5.1c1.38-1.61,2.28-1.86,4-2.69s4.67-1.74,5.46-2.21a38.23,38.23,0,0,0,3.95-2.76,11.54,11.54,0,0,0,1.86-2.1,34.91,34.91,0,0,0,1.8-6c.11-.6.82-2.81,1.85-3.47s1.38-1,2.52-1a5.39,5.39,0,0,1,2.7,1.49c.54.42.9,1.32,1.5,4,.1.47-.18,3.66.06,4.08a7.9,7.9,0,0,1,.83,1.68c.05.36.11,2.27.89,3.05a26.85,26.85,0,0,0,4.2,2.52,23.3,23.3,0,0,1,4,3.18,14.58,14.58,0,0,1,1.43,3.29,19.31,19.31,0,0,1-.18,2.58c-.12.42-.82,2.51-1.25,2.21s-1.32-3.06-1.68-3.66a14.51,14.51,0,0,0-3.31-2.76c-.68-.3-3.3-1.56-3.54-1.32a2.84,2.84,0,0,0-.42.66s.24,2.46.36,2.94,1.56,5.69,1.62,6.11S216,293.39,216,293.39Z" fill="#231f20"/>
 
                <path d="M233.64,316.13c.54.55.36,1.2,1.13,1.52s1.73-.19,1.83.86v.05a2.4,2.4,0,0,0,.58-2.21,1.4,1.4,0,0,0-1.32-1c-.67-.11-1.07.11-1.5-.53a6.27,6.27,0,0,1-.71-1.61c0,.05,0,.23,0,.33a5.75,5.75,0,0,0,.79,1.75c.28.37.51.34,1,.37,1,.07,1.79.35,1.71,1.45,0,.47-.11.94-.53.7-.09-.05-.16-.23-.28-.3a1.38,1.38,0,0,0-.67-.08c-.71,0-1.18-.12-1.5-.83a2.48,2.48,0,0,0-.5-.82c.05,0-.06.27,0,.34Z" fill="#231f20"/>
 
                <path d="M231.08,313.61a5.63,5.63,0,0,0-.41,1.26c-.24.59-.74.69-1.19,1.05-.67.53-.44,1.2-.69,1.91a1.82,1.82,0,0,0,0,.33c1.05-.62,2.9-.79,2.78-2.32,0-.21,0,.12,0,.18.05.62-.81.91-1.25,1.08a8.9,8.9,0,0,0-1.49.72v.34a3.14,3.14,0,0,0,.12-.61A1.81,1.81,0,0,1,230,316c.83-.5.62-1.27,1.11-2,.05-.07,0-.3,0-.33Z" fill="#231f20"/>
 
                <path d="M219.24,315.44a4.69,4.69,0,0,1,.64,1.53c.14,1-.16,1-.55,1.65a3,3,0,0,0-.2.45c0,.55-.23.67-.56.36a2.78,2.78,0,0,1-.27-.78,11.87,11.87,0,0,0-.13-1.57c-.2-.63-.94-1.2-.82-1.93,0-.1,0-.2,0-.3a2.44,2.44,0,0,0,.45,1.83c.61,1,.29,2.26.93,3.31h0c.53-.18.39-.63.64-1.05a3.13,3.13,0,0,0,.59-1.2,4.34,4.34,0,0,0-.68-2.66s-.06.25,0,.34Z" fill="#231f20"/>
 
                <path d="M219.76,312.66a18.38,18.38,0,0,0,.44,2.21c.18.66.49.73,1,1.07.31.19.38.42.59.69,0,0,.23.2.24.24,0,.24.18-.14,0,0a1.65,1.65,0,0,1-.95-.1c-.43-.19-.85-.43-1.26-.65,0,0-.07.31,0,.35.41.21.82.46,1.26.65s.86-.12,1.15.31v0a1.62,1.62,0,0,0-.6-1.49c-.44-.49-1.07-.45-1.36-1.1a10.35,10.35,0,0,1-.51-2.46,1,1,0,0,0,0,.29Z" fill="#231f20"/>
 
                <path d="M217.51,312.91c0,.69-1,1.55-1.38,2a4,4,0,0,0-1,2.39c0,.46-.08,1.42.28,1.75v0c.13-.53.55-.34.83-.67s.07-.27.17-.53a2.32,2.32,0,0,1,.46-.93,1.67,1.67,0,0,0,.47-.79.93.93,0,0,0,0-.29c-.13.55-.73,1-1,1.51s.47-.05-.33.81c-.18.19-.59.48-.76.22,0-.05,0-.35,0-.46-.22-1.58.64-2.3,1.49-3.41a2.72,2.72,0,0,0,.75-1.69c0-.24,0,0,0,.09Z" fill="#231f20"/>
 
                <path d="M234,316.18c-.12.24,0,.51,0,.73s-.51,0-.69.32a1,1,0,0,0-.07.38c0,.09.08.36-.07.3s0-.14,0-.16-.07-.13-.21-.19-.52,0-.79-.19a1.82,1.82,0,0,1-.58-.89s-.05.24,0,.33a1.65,1.65,0,0,0,.75,1c.21.09.43,0,.63.09s.2.45.34.63h0a1.43,1.43,0,0,0,.06-.51,2.17,2.17,0,0,0,0-.25c0-.44.28-.28.56-.37s.05-.62.19-.88c0-.09,0-.3,0-.34Z" fill="#231f20"/>
 
                <path d="M217.7,309.35a19.55,19.55,0,0,0-.12,2.16l-.12,1.3s.24.83.6.24.54-.18.54-.18a.5.5,0,0,1,.66.06c.24.27.24-.28.24-.28s.06-.27.36.08c.65.82.18-.89.18-.89s.54-1.21.3-1.64S217.7,309.35,217.7,309.35Z" fill="#fff"/>
 
                <path d="M217.69,309.22c-.16,1.29-.16,2.21-.23,3.36a1,1,0,0,0,.06.55c.36.79.81-.59,1.08-.1h0s.17-.11.22-.09a.45.45,0,0,1,.28,0l.19.16c.21,0,.08,0,.2-.22s-.09-.21.1-.19.36.47.53.4c.35-.13-.2-1.38-.09-1.44.47-.23-.23.56.06.18a1.74,1.74,0,0,0,.13-.36,4,4,0,0,0,.16-.66,1.33,1.33,0,0,0-.09-.86c-.25-.32-.94-.43-1.3-.53a11.7,11.7,0,0,0-1.31-.27s0,.33,0,.34a14.49,14.49,0,0,1,1.61.38,2.44,2.44,0,0,1,.86.33c.36.31.11.81,0,1.21a1.09,1.09,0,0,0-.1.59c0,.12.23.68.1.76s-.35-.52-.6-.37,0,.29-.09.36-.2-.08-.33-.14-.3,0-.49,0-.12-.19-.42,0-.2.42-.44.39-.16-.24-.26-.31l0-.1v.2a3.42,3.42,0,0,0,0-.44c0-.26.05-.52.07-.77,0-.73,0-1.46.12-2.19C217.72,309.42,217.71,309.09,217.69,309.22Z" fill="#231f20"/>
 
                <path d="M233.52,283.68s1.32,1.56,1.5,1.68,2.34,1,2.52,1.14a8.62,8.62,0,0,1,1.93,1.32,10.29,10.29,0,0,1,2.58,4.61c.1.43.18,3.42-.12,3.36a1.12,1.12,0,0,1-.72-.72,5.34,5.34,0,0,0-1.08-1.93,12.86,12.86,0,0,0-3.65-2.64c-.66-.36-2.82-1.44-3.06-.66-.08.24,0-2.28-.06-2.7S233.52,283.68,233.52,283.68Z" fill="#f1d4c1"/>
 
                <path d="M222.62,279.73s3.23-1.45,4.19-1.32,3.59.48,4,.6a5.21,5.21,0,0,1,1.93,1.67,17.06,17.06,0,0,1,.83,3c0,.72-.18,3.06-.18,3.9s-.06,1.85-.06,2.45.24,2.4.36,3.84,1.68,6.83,1.68,7.31a18.89,18.89,0,0,1,.24,3c-.12,1-1.8,8.51-1.94,9.23s.6.36-.12.72-.47.42-.82.06-.48.06-.48.06l-.72-.48s-.36,0-.24-1.08a2.91,2.91,0,0,0-.83-2,9,9,0,0,1-1.56,1.8c-.48.24-2.56,1.66-3.89,1.56-1.68-.12-3.91-1.53-4.92-2s-1-.12-1.26-.72a3.52,3.52,0,0,0-.72-1.08,28.44,28.44,0,0,1-2.15-2.76c-.48-.84-1.09-3.23-.61-4.3a41.55,41.55,0,0,0,1.31-4.68c.13-.48-.48-3.83-.48-4.43a26.82,26.82,0,0,1,1.68-4.08c.36-.84.48-4.07.83-5.15A19.66,19.66,0,0,1,222.62,279.73Z" fill="#fff"/>
 
                <path d="M224.59,275.59c-.27,0,.83.18,1.44,0s1.44-.9,1.94-1a3.25,3.25,0,0,1,1.38.18,16.52,16.52,0,0,0,2.51.55c.36,0-.29-.12.06.06s0,.24-.3.56a2.54,2.54,0,0,1-1,.6c-.6.3-1.2.95-2,.82s-2.34,0-2.7-.3S225,275.53,224.59,275.59Z" fill="#ef4237"/>
 
                <path d="M225.91,270.61s-.12,0-.12.72a1.17,1.17,0,0,0,.6,1.14,1.81,1.81,0,0,1,.78,1.26c0,.54-1,.9-1.5.6a5.73,5.73,0,0,1-1.08-1.14,1.66,1.66,0,0,1-.29-.48,4.57,4.57,0,0,1,.47-1.06A3.34,3.34,0,0,1,225.91,270.61Z" fill="#fff"/>
 
                <path d="M230.53,271.33a8.1,8.1,0,0,1,1,2c.07.26-.7.86-1,.9-.48.06-.9-.12-1-.42s-.24-.78.18-1.14S230.47,272.35,230.53,271.33Z" fill="#fff"/>
 
                <path d="M215.66,285.42c-.42.22-4.07,1.38-4.55,1.62a9,9,0,0,0-3.18,2.27,10.06,10.06,0,0,0-1.32,2.82c-.18.61-.53,1.38,0,1.74s1.86-.19,2.21-.42a4.38,4.38,0,0,1,3-.56c.54.05,1.79.44,2.16.48a3.39,3.39,0,0,0,2.33-.48,8.2,8.2,0,0,0,.83-1.85c.17-.42,1.14-2.4,1-3.24s-.3-2.58-.3-3.18S217.16,284.64,215.66,285.42Z" fill="#f1d4c1"/>
 
                <path d="M225.25,273.37s.72-.3,1-.12a.88.88,0,0,1,.36.61.45.45,0,0,1-.51.37h0C225.61,274.15,225.49,273.61,225.25,273.37Z" fill="#231f20"/>
 
                <path d="M229.87,273.67s.12-.55.42-.6A1.48,1.48,0,0,1,231,273c.18.06.18.42,0,.66S230.41,274.45,229.87,273.67Z" fill="#231f20"/>
 
                <path d="M232,277.27a9.2,9.2,0,0,0,.42,2.46c.24.48.12.71.24.95s-.36-.3-.6-.55-.3-.3-.48-.18-.18-.36-.36-.3a3.58,3.58,0,0,0-.48.24.66.66,0,0,0-.12-.3c-.12-.18-.36-.42-.42-.18h-.66l-.12-.3s-.55.12-.6-.06.3-.55-.06-.18l-.36.36-.42-.06-.36-.06h-.72s-.18-.48-.3-.3l-.36.6-.3-.36-.3.48-.6.24-.17-.36-.31.48a.53.53,0,0,0-.59.24l-.07-.42-.24.36-.59.55h-.42l-.3.24H222l-.36-.18a8.9,8.9,0,0,0,.66-1c.3-.55.3-.3.3-.55a7.59,7.59,0,0,1,.48-1.32l.24-.72s.55-.24.78.06.36.24.55.12l.18-.12.6.18s.36-.18.48,0l.12.18a1.22,1.22,0,0,1,.6.06c.24.12-.12-.24.24.12s.6.18.6.18a.34.34,0,0,1,.46-.13h0a.62.62,0,0,0,.59,0l.31-.12.35-.06.42-.06.3-.12.36-.06.3-.06c.42.06.55.06.72-.12l.18-.18h0l.55-.18Z" fill="#424143"/>
 
                <path d="M218.15,300.88a3,3,0,0,1-.14,1.29c-.07.2-.15.4-.21.6a2.72,2.72,0,0,0-.08.63,4.7,4.7,0,0,0,.17,1.24c.08.42.21.83.3,1.25h0a5.25,5.25,0,0,1-.5-1.2,3.18,3.18,0,0,1-.07-1.3c0-.22.1-.43.14-.64s.07-.43.1-.64c.1-.42.21-.82.28-1.24Z" fill="#231f20"/>
 
                <path d="M218.89,308.47a5.23,5.23,0,0,1,.51.93c.06.16.12.33.19.49a2.6,2.6,0,0,0,.28.45,11.37,11.37,0,0,1,1.06,1.82h0a5.58,5.58,0,0,1-1.14-1.78c-.07-.16-.15-.32-.23-.47s-.2-.3-.28-.45a3.81,3.81,0,0,1-.4-1Z" fill="#231f20"/>
 
                <path d="M232.64,304.91a1.61,1.61,0,0,0-.85.87,4.93,4.93,0,0,0-.35,1.19,4.5,4.5,0,0,1-.4,1.24,6.07,6.07,0,0,0-.59,1.13,1.62,1.62,0,0,0,0,.62,2,2,0,0,0,.18.59c.17.39.41.75.58,1.16a2.33,2.33,0,0,1,.17.64,3.75,3.75,0,0,1,0,.67,1.41,1.41,0,0,0,.22,1.1h-.19a.42.42,0,0,1,.43-.1l-.16.18-.14-.3-.1-.2.22,0a.7.7,0,0,1,.61.63l-.09-.07a.33.33,0,0,0,.3-.19l0-.11.06.1.23.36h0l.25,0v0l-.24.08h0l0,0-.27-.33h.11a.49.49,0,0,1-.41.31h-.08v-.08a.54.54,0,0,0-.46-.43l.12-.17.16.29.14.26-.29-.08a.17.17,0,0,0-.15.05l-.08.11-.12-.1a1.06,1.06,0,0,1-.32-.65,3.75,3.75,0,0,1,0-.67,3.11,3.11,0,0,0,0-.61,2.31,2.31,0,0,0-.14-.59c-.14-.39-.35-.77-.49-1.19a2,2,0,0,1-.06-1.29,12.34,12.34,0,0,1,.51-1.18,7.19,7.19,0,0,0,.32-1.21,4.23,4.23,0,0,1,.42-1.24,2,2,0,0,1,.42-.51,1.22,1.22,0,0,1,.59-.29Z" fill="#231f20"/>
 
                <path d="M217.52,290.39a11.11,11.11,0,0,0-1.55,2.89v.11a4.38,4.38,0,0,0,.06,1.74,21.86,21.86,0,0,1-.06,4.49c-.05.61-.82,3.36-.9,4.14s-.48,1.26.12,2.4a9.94,9.94,0,0,1,1.2,2.82c.06.66-.31,2.81-.79,3.23s-1.55,1.44-1.79,1.68.24.55.6.36a4.48,4.48,0,0,0,1.14-.6c.18-.24.24.06.42.12s.35-.12.47-.3.49-.66.49-.66h.55s.28-1.62.28-2.1.24-.55,0-.9a13.75,13.75,0,0,1-.72-1.26,15.59,15.59,0,0,1-1.14-4.79,12.09,12.09,0,0,1,.83-3.9,4.85,4.85,0,0,0,.36-3.11,12.67,12.67,0,0,1-.72-2.7A10.76,10.76,0,0,1,217.52,290.39Z" fill="#231f20"/>
 
                <path d="M218.31,310.52c.64.43,1.06,1.14,1.7,1.59a9.06,9.06,0,0,0,1.23.66c1,.51,2.2,1.36,3.35,1.41a5.46,5.46,0,0,0,3.52-1.38,11.45,11.45,0,0,0,2.49-2c.05-.07,0-.3,0-.33-.56.85-1.89,1.48-2.68,2.12a5.15,5.15,0,0,1-3.47,1.22c-1.18-.1-2.4-1-3.44-1.53a24.37,24.37,0,0,1-2.69-2.12s-.08.3,0,.35Z" fill="#231f20"/>
 
                <path d="M224.54,275.64a8.87,8.87,0,0,0,3.31.9,13.32,13.32,0,0,0,4.3-.9s0-.34,0-.34a13.86,13.86,0,0,1-4.3.89,8.91,8.91,0,0,1-3.31-.89s-.06.31,0,.34Z" fill="#231f20"/>
 
                <path d="M231.9,276.44a9.11,9.11,0,0,0,.16,2.9c.15.63.55.93.8,1.45a11,11,0,0,1,.52,2.76,14.22,14.22,0,0,1-.11,2.43c0,.94,0,1.87-.05,2.8a20,20,0,0,0,.07,2.68,32,32,0,0,0,1.07,5.89c.35,1.27.73,2.55,1,3.84a14.77,14.77,0,0,1-.54,6.19c-.39,1.65-.92,3.29-1.18,5a4.05,4.05,0,0,0,.41,2.82c-.09-.13.24-1,0-1.33-.32-.5-.31-.15-.27-.72a6.5,6.5,0,0,1,.27-1.22c.26-1,.53-2.08.77-3.13a26.92,26.92,0,0,0,.8-5.57,25.59,25.59,0,0,0-1.33-7.48,26.88,26.88,0,0,1-.77-3.67c-.17-1.54-.07-3-.09-4.51a40.71,40.71,0,0,0,.08-4.69,16,16,0,0,0-.51-3c-.37-1-1.1-1.31-1-2.66,0-.24-.06-1.53-.13-.69Z" fill="#231f20"/>
 
            </g>
 
            <g id="chinstrap">
 
                <path d="M279.73,292.58s-.55,1.51-.68,1.78-1.08,1.6-1.14,1.73-1.56,1.5-1.63,1.63a14.42,14.42,0,0,0-1.62,2.5,10.14,10.14,0,0,0-.73,2.18,15.52,15.52,0,0,0-.16,2.26,5.74,5.74,0,0,0,.56,1.34c.09,0,.5,0,.59-.11s.73-1,.79-1.07.82-1.54.88-1.61.68-1,.75-1.1.72-.64.83-.73.35-.61.46-.61.35-.75.35-.82.17-2.2.28-2.59.35-1.89.39-2.07A22.3,22.3,0,0,0,279.73,292.58Z" fill="#e6e7e7"/>
 
                <path d="M279.73,291.43a11.24,11.24,0,0,0-.37,1.41,11.3,11.3,0,0,1-1,2.15c-.16.27-2.09,2.31-2.46,2.84a9.44,9.44,0,0,0-1.86,3.29,10,10,0,0,0-.5,2.64,10.06,10.06,0,0,0,.23,2.93c.27.61.27.8.42.91s.27.27.41.17a2.13,2.13,0,0,0,.56-1,7,7,0,0,1,.57-1.47c.13-.31.59-1.26.74-1.56a7.21,7.21,0,0,1,1-1.41c.33-.31,1.23-1.11,1.41-1.27a5.61,5.61,0,0,0,.06-1.66s0,1.19-.35,1.45a9,9,0,0,0-1.85,2c-.37.69-1.73,2.66-2,2.6s-.55-.73-.62-1.11,0-.88,0-1.2a5.21,5.21,0,0,1,.57-2.55,14.28,14.28,0,0,1,1.43-2.33c.35-.46,1.32-1.26,1.6-1.58a12.34,12.34,0,0,0,1-1.28,11.71,11.71,0,0,0,1.15-1.85A20,20,0,0,1,279.73,291.43Z" fill="#231f20"/>
 
                <path d="M279.34,282.89l1.47-1,2.21-.47,2.12.28,2.2,1.93.92,1.75.1,3.13s3.17,4.78,3.4,5.71c.1.37.65,8.28.74,8.66s.55,3.5.64,3.77a1.8,1.8,0,0,1,.23.87c0,.59,0,2,0,2s-.19,1.19-.19,1.56a6.62,6.62,0,0,1-.92,1.66L291,314l-1.56.18,0-1.55-.83.47-1.07.46s-.84.54-1.31.33a4.58,4.58,0,0,1-.53-.14c-.09,0-.18.15-.25.07a1.09,1.09,0,0,0-.62-.4,1.7,1.7,0,0,1-.45-.26l.13.91-.31.17h-.85l-.33,0-.4.07-.39-.55H282l-.31-.27s-1.34-2.35-1.43-2.72a11.13,11.13,0,0,1-.27-2.44,7.21,7.21,0,0,0-.58-1.52,7.1,7.1,0,0,1-.53-2.37c-.05-1.33-.14-5.09,0-6.35a12.77,12.77,0,0,1,.44-2,6.85,6.85,0,0,0,.46-2.21,9.93,9.93,0,0,1,.09-3.41,4.19,4.19,0,0,1,.92-1.77c.28-.28.67-.48.7-.81a1.09,1.09,0,0,0-.56-1.1c-.47-.38-1.31-1.22-1.31-1.22a9,9,0,0,1-1.26-1.06C278.23,284.18,279.34,282.89,279.34,282.89Z" fill="#fff"/>
 
                <path d="M293.31,309.13s1.45,2.49,1.86,3a9.57,9.57,0,0,1,.76,1.22l.28.67c0,.08-.44,0-.51,0a2.2,2.2,0,0,1-.8-.58l.82.9s-.22.5-.91,0c-.05,0-.28-.16-.31-.23-.27-.69.21.67.21.67a1.16,1.16,0,0,1-1.33-.83l.34,1s-1.19.28-1.63-2.48S293.31,309.13,293.31,309.13Z" fill="#231f20"/>
 
                <path d="M289.51,314.2c-.12.21-.23.42-.33.64s-.26.2-.34.26a2.55,2.55,0,0,1-.85.31,2,2,0,0,0-.63.43,3.15,3.15,0,0,0-.31.57.73.73,0,0,0,0,.36,2,2,0,0,1,.36-.29c.17-.06.36-.18.49-.21a4,4,0,0,0,.86-.4s-.54.67-.59.78-.19.27-.24.43l-.21.69s.68-.31.76-.48a1.42,1.42,0,0,1,.63-.48l.62-.18.65-.48a.94.94,0,0,0,.79.51,4.6,4.6,0,0,0,1-.22,3.22,3.22,0,0,1,.73.22s.12-.19-.21-.55c-.16-.17-.43-.59-.59-.65s-.89-.15-1-.38a1.25,1.25,0,0,1,.06-.89c.11-.28-.23,0-.23,0l-.09,0h-.12l-.21-.05-.2,0-.28,0-.19.07Z" fill="#d2d3d4"/>
 
                <path d="M282.53,314.24s.11.31,0,.42a.74.74,0,0,1-.34.15l-.64.13-.84.41s-.25.16-.46.32-.11.44-.11.44l.43-.15.31,0s.55-.16.58-.08.31.09.31.09l.33-.05-.26.16-.25.33-.09.35a4.4,4.4,0,0,0,.41-.28.65.65,0,0,1,.51,0,1.07,1.07,0,0,0,.56.05,4.16,4.16,0,0,0,.5-.16,3.28,3.28,0,0,1,.69-.48,3.89,3.89,0,0,1,.49-.12c.12,0,.95.25,1.08.25a1.52,1.52,0,0,0,.55-.16.18.18,0,0,1,.25-.06l.34.16a.63.63,0,0,0-.3-.51c-.27-.17-.58-.55-.73-.53s-.72-.16-.85-.13-.55-.38-.58-.58l-.09.09h-.11l-.24,0h-.2l-.19,0-.17-.07-.25.12-.15-.12-.18.15Z" fill="#d2d3d4"/>
 
                <path d="M282.88,283.17a1.15,1.15,0,0,1,.63.17,1.09,1.09,0,0,1,.17.13.71.71,0,0,1,.1.14l.13.23v0s0,0,0,.06a3.19,3.19,0,0,1-.45.23l-.24.08a.71.71,0,0,1-.29,0,1,1,0,0,1-.48-.21.66.66,0,0,1-.27-.49c0-.07.05-.1.11-.13a1.77,1.77,0,0,1,.28-.15A.88.88,0,0,1,282.88,283.17Z" fill="#231f20"/>
 
                <path d="M282.78,283.45a.48.48,0,0,1,.24,0,.37.37,0,0,1,.14,0,.45.45,0,0,1,.24.19.24.24,0,0,1,0,.26.38.38,0,0,1-.28.14h-.15a.68.68,0,0,1-.36-.15.24.24,0,0,1-.06-.28.47.47,0,0,1,.09-.12A.49.49,0,0,1,282.78,283.45Z" fill="#fff"/>
 
                <path d="M282.12,309.76a5,5,0,0,0,1,2.48,6.44,6.44,0,0,0,1.24,1c.41.25.79.28,1.08.7h0c.37-.22.67.13,1,.1a4.65,4.65,0,0,0,1.3-.49c.68-.26,1.66-.6,1.91-1.32v-.1c-.23.66-1.29,1.07-1.91,1.31-.88.34-1.29.58-2.19.24h0c-.11.16-1.52-.79-1.7-.93a4.5,4.5,0,0,1-1.74-3.06.17.17,0,0,0,0,.1Z" fill="#231f20"/>
 
                <path d="M289.51,314.15a1.72,1.72,0,0,1-1.11,1.1c-.48.16-.85.18-1.17.68a1.31,1.31,0,0,0-.18,1h0c.28-.7,1.55-.46,1.74-1.13-.11.4-.69.67-.86,1.06a6.34,6.34,0,0,0-.21.86v.1l.06,0h0c.25-.33.51-.26.81-.48s.27-.43.58-.55.46,0,.67-.14.41-.48.55-.47c-.21,0,.69.53.26.37a1.38,1.38,0,0,0,.69.16c.29,0,.5-.24.78-.28s.52.26.81.28v-.08c0-.39-.22-.45-.43-.71s-.11-.34-.26-.47c-.5-.43-1.65.27-1.12-1.26,0,0,0-.09,0-.1-.31-.23-1.23.06-1.61,0,0,0,0,.1,0,.1.31,0,1.27-.21,1.48,0s0,.33,0,.59a.61.61,0,0,0,.14.47c.23.25.61.08.87.19a1,1,0,0,1,.53.66h0c.16,0,.5.44.34.52a3.91,3.91,0,0,0-.88-.22c-.64.07-1.18.55-1.59-.33h0c-.45.62-1,.42-1.58.78-.26.17-.33.56-.72.6-.11,0-.43.28-.15-.12a.21.21,0,0,0,0-.11c-.16-.14.86-1.33.91-1.38a.08.08,0,0,0,0-.1,9.55,9.55,0,0,1-1.51.65s-.36.31-.26.35c-.34-.12.44-1.13.69-1.27s.77-.14,1.12-.37a1.6,1.6,0,0,0,.62-.87S289.51,314.16,289.51,314.15Z" fill="#231f20"/>
 
                <path d="M287.81,285.26a2.43,2.43,0,0,0-.58-1c-.25-.13.12,0-.25-.13s-.07-.1-.37-.14-.28.14-.41,0-.1-.1-.26-.14a4.12,4.12,0,0,1-.58-.23c-.16-.1,0,.11-.16-.1s0-.11-.18-.2.05.11-.21-.1,0,0-.25-.2.39-.19-.21-.23-.2.07-.6,0-.11-.07-.39-.12a6.45,6.45,0,0,0-.92-.27H282c-.21,0-.09-.14-.32,0s-.09.07-.19.09c-.29.07-.09.07-.32.05s-.07-.05-.28,0,.07,0-.2.09-.19-.16-.42,0-.27.26-.36.23.06,0-.1,0,0,0-.16,0,.07.07-.14.05a.86.86,0,0,0-.32,0,.79.79,0,0,1,0-.37c0-.12.07-.09.19-.23s.16-.07.27-.16,0-.06.12-.1.14-.13.25-.18,0,0,.18-.11.12-.12.26-.17a.48.48,0,0,0,.25-.14c.12-.09.07-.14.26-.16s.1-.05.16-.08a3.43,3.43,0,0,0,.44-.19,5.64,5.64,0,0,1,2.39-.65,5.27,5.27,0,0,1,2.51.65,3.67,3.67,0,0,1,.94,1.17c.09.32.63,1.8.83,2.23s.69.86.9,1.34a15.28,15.28,0,0,1,.43,2.07,6.62,6.62,0,0,0,.85,1.57c.14.16.9,1.5,1.66,2.88.15.27.74,1.4.83,1.58a11.16,11.16,0,0,1,.76,1.94,30,30,0,0,1,.34,3.8c0,.55-.11,2-.06,2.9a35.34,35.34,0,0,0,.29,3.68,6.27,6.27,0,0,1,.37,1.26c0,.37.19.93-.16,1.16a7,7,0,0,1-1.71-1.87,12.79,12.79,0,0,1-1.51-3.45,37,37,0,0,1-.19-5.69c0-.55-.57-.69-.66-1s-.44-2.26-.79-3.23-.53-1.28-1.06-1.58-1.06-.28-1.4-.79-1.22-1.12-.76-2.14,1.2-.55,1.57-2a4.14,4.14,0,0,0-.05-1.45Z" fill="#231f20"/>
 
                <path d="M290.59,293.5a8.59,8.59,0,0,1,.53,1.55,22.32,22.32,0,0,1,0,3.06c-.09.28-.14.78-.21,1s.21-1.55.14-2,0-1.52,0-1.84C291,294.65,290.61,294,290.59,293.5Z" fill="#fff"/>
 
                <path d="M293.37,307.62l0,.71a5.11,5.11,0,0,1-.14,1.7c-.17.49-1.11,2.3-1.18,2.56a5.13,5.13,0,0,0-.25.69c0,.14-.14-.07-.14-.23s0,.21,0,.37-.16,0-.16,0a1.61,1.61,0,0,0-.07.37c0,.14-.12.07-.12,0s-.11.16-.14.28-.23,0-.23,0l-.09.23-.11-.21-.23.14,0-.16-.16.18-.07-.16-.18.18v-.18l-.16.18-.14-.16-.09.16-.12-.16-.16.1V314s0-.69,0-1,0-1.15,0-1.49a2.09,2.09,0,0,1,.23-.72" fill="#fff"/>
 
                <path d="M293.37,307.65a6.84,6.84,0,0,1-.66,3.48c-.09.19-.87,1.93-1,1.77v0c0,.07,0,.48-.16.32h0s-.11.47-.18.35h0c-.17,0-.1.38-.37.29h0c-.06.16-.11.18-.2,0h0c-.09.06-.22.14-.24,0v0c-.08.09-.17.17-.23,0h0c-.07.07-.17.31-.17.13v-.13c-.16.17-.14.2-.3,0h0c-.07.11-.12.1-.2,0h0c-.34.19-.12-.31-.11-.63a5.64,5.64,0,0,1,.28-2.38c0-.07,0-.23,0-.26a8.22,8.22,0,0,0-.34,3.49.51.51,0,0,0,0,.13.18.18,0,0,1,.25,0l0,0h0c.09-.16.37,0,.37-.13a.57.57,0,0,1,0,.13c.09-.09.19-.17.25,0h0c.07-.07.15-.19.18,0s0,0,0,0,.25-.09.34.07h0a4.15,4.15,0,0,1,.51-.43h0c.1-.14,0-.47.25-.35h0c.06-.13,0-.4.15-.17h0a5.51,5.51,0,0,0,.59-1.4,14.73,14.73,0,0,0,.88-1.89,7.72,7.72,0,0,0,.12-2.58c0-.18,0,0,0,.07Z" fill="#231f20"/>
 
                <path d="M284.39,313.22c.09.28,0,.86.14,1.16a1.22,1.22,0,0,0,.83.47c.53.12.86.13,1.19.64h0c.15-.09.3.11.31.25,0,.32-.18-.12-.37-.08-.42.08-.52.23-1,.17s-.79-.24-1.2-.13-.53.44-.85.62c-.1.05-2.08.05-2,.22-.19-.31,1.8-1.35,2-1.53,0,0,0-.1,0-.11-.6.64-1.82.77-2.06,1.74v.1a1.43,1.43,0,0,1,1.24-.24c.8.08.81-.25,1.41-.58s1,.1,1.68.09.75-.46,1.17,0v0a1.22,1.22,0,0,0,0-.27c-.05-.29-.62-.74-.9-.88-.51-.28-1.23,0-1.51-.73-.11-.28,0-.71-.11-1v.1Z" fill="#231f20"/>
 
                <path d="M282.33,315.63a1.66,1.66,0,0,1-1,.14c-.36,0-1.3.38-1-.06a2.85,2.85,0,0,1,1-.63c.23-.1,1.1-.18,1.24-.33.36-.4-.06-.72-.37-1.11h0c-.15.2-1.47-2.23-1.61-2.52-.49-1-.28-2-.55-3a.14.14,0,0,0,0,.09c.19.75,0,1.59.25,2.37.33,1.07,1.11,1.93,1.45,3h0c.13-.12.32.2.37.32h0c.19-.24.55.61.46.78s-1.33.33-1.6.5-.83.47-.83.92v.05a12.54,12.54,0,0,1,1.25-.23,1.59,1.59,0,0,0,1-.14s0-.1,0-.11Z" fill="#231f20"/>
 
                <path d="M278.09,284.45a9.81,9.81,0,0,1,2.69,2.17c.79.72.91,1,.24,1.65a4.06,4.06,0,0,0-.93,1.43,6.16,6.16,0,0,0-.48,2.24c0,.2,0,.38.05.59a11.49,11.49,0,0,1-.47,3.88,30.58,30.58,0,0,0-.35,7c0,2.14,1,3.77,1.45,5.8a.6.6,0,0,0,0-.23,24.13,24.13,0,0,0-.94-2.58,14.34,14.34,0,0,1-.48-5.05,19.45,19.45,0,0,1,.48-5.38,8.69,8.69,0,0,0,.48-2.25c0-1.61-.32-3,.59-4.52.34-.55,1.18-.92,1.21-1.61s-.49-.94-.87-1.27a9.77,9.77,0,0,0-2.69-2.16s0,.25,0,.27Z" fill="#231f20"/>
 
                <path d="M279.89,282.18s-.57.53-.55.64,1.05.48,1.42.95.95.42,1.08.55-.27.15-.77.13c-.23,0-.84-.26-1.2-.12a6.19,6.19,0,0,1-1.82.12,13.75,13.75,0,0,1-2.26-.79c-.05-.07-.35-.07-.35-.07s.49-.82,1.18-.87c.9-.07,2.08-.23,2.35-.28S280,282,279.89,282.18Z" fill="#595a5c"/>
 
                <path d="M280.14,285.82a2.22,2.22,0,0,0,1,0,5.05,5.05,0,0,1,.55-.18,3.55,3.55,0,0,1,.65-.12,5.77,5.77,0,0,0,1.78-.46,2.42,2.42,0,0,1,1.36-.42,5.84,5.84,0,0,0,1.18.21l.11,0c.22-.09.5-.55.69-.49a.35.35,0,0,1,.2.28,5.7,5.7,0,0,0-.55.21c-.21.09-.18.23-.41.2a6,6,0,0,0-1.36-.2,3.85,3.85,0,0,0-1.36.46,5.65,5.65,0,0,1-1.59.41,14,14,0,0,1-1.54.3c-.21,0-.65,0-.65,0Z" fill="#231f20"/>
 
                <path d="M283.1,283.69a.07.07,0,0,1,0,.08s-.06.05-.1.06-.36,0-.27-.13S283,283.64,283.1,283.69Z" fill="#231f20"/>
 
                <path d="M275.47,283.55s0,0,.1,0c.39-.05.78-.09,1.17-.11s1.09.23,1.49.25a5.42,5.42,0,0,1,1.68.08,5.66,5.66,0,0,0,1.9.6c.16,0-.28.12-.79-.07-.13,0-1-.41-1.27-.48a5.53,5.53,0,0,0-1.52,0c-.1,0-.93-.19-1.36-.27a2.43,2.43,0,0,0-.66,0C276.08,283.49,275.62,283.62,275.47,283.55Z" fill="#231f20"/>
 
                <path d="M282.19,313.87c.18.12.18.43.34.53s0,0,.16-.06.11.08.16.08.08-.09.13-.1.07-.1.11-.09a2,2,0,0,1,0,.24h0c.09-.19.09-.27.22,0h0c.07-.2.07-.17.2,0h0c.12-.21.12-.16.2,0h0c.06-.22.05-.23.19,0h0c.09-.22.08-.14.16,0h0c.06-.14.06-.22.2-.08v0c0-.12,0-.14.1-.19s0-.26,0-.28-.06.05-.1.1.05.19-.12,0h0c-.1.22-.1.18-.18,0h0c-.08.21-.07.17-.2,0h0c-.07.25-.07.22-.15,0h0c-.12.2-.11.18-.25,0h0c-.07.21-.07.16-.17,0h0a.59.59,0,0,1-.09.2s-.05-.11-.06-.21v0c-.2.18-.18.24-.4.08h0c-.09.22-.12.17-.22,0a1.07,1.07,0,0,0-.28-.41s-.05.23,0,.28Z" fill="#231f20"/>
 
                <path d="M292.86,307.15c-.07,0,.23,1,.24,1.73a6.37,6.37,0,0,1,0,1.38c-.12.61.17.05.17.05l.22-.81-.06-1.87A6.17,6.17,0,0,1,292.86,307.15Z" fill="#231f20"/>
 
            </g>
 
            <g id="macaronia_bub" data-name="macaronia bub">
 
                <path d="M257.91,316.21a1.06,1.06,0,0,1,.51-1.19,17.43,17.43,0,0,1,3-.78l4.14-1.56.88-.25,0,.91.66.3a4,4,0,0,1,1,.24,6.46,6.46,0,0,1,.83.42,8,8,0,0,1,.72.78q.22.35.42.72v.8l-.45-.3.09.75-1.32-.6-2,.42-.72-.3-.12.42-1.14-.12-.18.54a13.65,13.65,0,0,0-2.57-.6,14,14,0,0,0-2.28.78,1.92,1.92,0,0,1-1-.42A1.25,1.25,0,0,1,257.91,316.21Z" fill="#f9c6d6"/>
 
                <path d="M259.08,285.35c.13-.12.9-1.62,1-1.86s1.49-2.46,2.76-2.4,3.89,1,4.25,2.58.55,3.48,1.14,4.2a20.76,20.76,0,0,1,2.1,2.69,5.83,5.83,0,0,1,1.2,2.82,14.14,14.14,0,0,1,.06,3.05c-.06,1,.24,4.08.36,5.28a16.68,16.68,0,0,1-1,4.68c-.2.48-1,2-1.26,2.57a18,18,0,0,1-2.34,3,7.94,7.94,0,0,0-1.5,1,4.71,4.71,0,0,1-1.68,1c-.24-.06-.77.48-1.14.42a2.47,2.47,0,0,0-1,.12l-2.59.66s-.18-.18-.48.06a4.5,4.5,0,0,0-1.14,1.25c-.12.37-.55,0-.78,0s-.66.36-1.08.3a4.49,4.49,0,0,1-1.49-.6c-.37-.24-.19-1-.9-1.85a18.47,18.47,0,0,1-1.92-4.26,26.3,26.3,0,0,1,.3-4.37c.05-.55,2.39-8.81,2.81-9.71s1.44-.48,1.74-2.46S258.48,285.89,259.08,285.35Z" fill="#fff"/>
 
                <path d="M266.42,312.85c0-.26,0-.28-.07-.08l-.06.16a2,2,0,0,0,0,.24,1,1,0,0,0,0,.24,1.35,1.35,0,0,0,.47.91c.3.21.44.11.82.15a3.43,3.43,0,0,1,2.13,1c.38.4.25.84.37,1.35v-.32c-.56-.49-1-1.15-1.78-1.21-1.07-.08-1.91.38-2.78-.41,0,0-.07.28,0,.35.88.79,1.71.32,2.78.4.76.06,1.23.73,1.78,1.22a1.7,1.7,0,0,0,0-.32c-.11-.45,0-.82-.21-1.2a2.57,2.57,0,0,0-1.62-1c-.35-.09-.79-.09-1.12-.18-.58-.15-.74-.57-.69-1.15,0-.15.1-.31,0-.46,0,0-.06.26,0,.34Z" fill="#231f20"/>
 
                <path d="M266.27,313.39a3.43,3.43,0,0,0,1.68.72,2,2,0,0,1,1.43.89s.06-.25,0-.33c-.64-1.13-2.21-.83-3.12-1.63,0,0-.07.28,0,.35Z" fill="#231f20"/>
 
                <path d="M257.81,316.63a2.1,2.1,0,0,0,.67,1c.73.5,1.39-.18,2.08-.38a4.87,4.87,0,0,1,1.9-.1c.62.05,1.3.46,1.88.46h0c.19-.55-.26-1.05-.61-1.44a2.8,2.8,0,0,0-2.06-.61,3.05,3.05,0,0,0-1.88.66c-.07.05,0,.32,0,.34a3.75,3.75,0,0,1,1.38-.66,6.36,6.36,0,0,1,1.22.15c.74.06,1.35.08,1.68.94.09.25.23.18,0,.24a4.67,4.67,0,0,1-.75-.28,5.26,5.26,0,0,0-3,0c-1.12.45-1.93.74-2.48-.65,0,.05-.05.24,0,.33Z" fill="#231f20"/>
 
                <path d="M262,315a16.33,16.33,0,0,1,1.86.27,2.74,2.74,0,0,1,1,.42c.07.05.67.86.55.9s0,.22,0,.25a1.08,1.08,0,0,0,.16.42v-.34a1.53,1.53,0,0,0-1.38-.12c-.06,0,0,.34,0,.35a1.5,1.5,0,0,1,1.38.11,1,1,0,0,0,0-.34,2,2,0,0,1-.14-.25v.26c.37-.13-.33-1.38-.44-1.48-.71-.69-2.09-.71-3-.81,0,0,0,.34,0,.35Z" fill="#231f20"/>
 
                <path d="M253.08,315.66c.22.37.55.9,1,1,.25.09,1.27-.1,1.4.31h0a14.4,14.4,0,0,0,2-.21c.65-.21.91-1.1,1.51-1.38.3-.14.52.08.67,0-.1,0,.65-.17.22-.1.12,0,.71-.32.74-.45s0-.31,0-.32a.11.11,0,0,1-.12,0v.35a7.19,7.19,0,0,0,1.46-.33c.37-.11,1-.2,1.22.1h0c.14-.08,1-.81,1-.5v0c.36.11,1-.67,1.34-.87a10.61,10.61,0,0,0,1.69-1.09c.07-.06,0-.32,0-.35a8.11,8.11,0,0,1-1.61,1,10.28,10.28,0,0,0-.81.67,1.66,1.66,0,0,1-.55.31c-.2.07-.06-.1-.09-.09-.23.07-.52.32-.75.37a2.26,2.26,0,0,1-.58,0,5.09,5.09,0,0,0-1,.19,6.87,6.87,0,0,1-1.35.27.69.69,0,0,0,0,.35.11.11,0,0,0,.11,0v-.32s-.91.55-.9.55-.32-.26-.53-.21c-.8.18-1.08,1.33-1.95,1.49a5.1,5.1,0,0,1-2.13.05c-.91-.22-1.4-.22-2-1.17,0,0-.05.25,0,.33Z" fill="#231f20"/>
 
                <path d="M265.42,316.56c.52.75,1.24.43,2,.26a2.72,2.72,0,0,1,2.23.4,2.8,2.8,0,0,0,0-.29,6.78,6.78,0,0,0-.19-1c0,.06,0,.23,0,.33a5.73,5.73,0,0,1,.17.92v-.3a2.66,2.66,0,0,0-2-.45c-.77.16-1.63.6-2.18-.2,0,0-.06.26,0,.33Z" fill="#231f20"/>
 
                <path d="M264.71,282.71c.23.2.12.72.48,1.68s1.14,2,1.44,2.7,1.5,1.67,2,2.45a13.33,13.33,0,0,1,2,3.78c.17,1.08-.56,2.69-.31,3.72s.66,4.07.73,4.55a36.34,36.34,0,0,1-.66,4c-.07.29-.56,1.38-1,2.51a16.46,16.46,0,0,1-2.24,3.59c-.27.29-.49.5-.7.72a3.06,3.06,0,0,1-.63.51,11.7,11.7,0,0,0-1,.75,10.21,10.21,0,0,0,1.92-.9,7.6,7.6,0,0,0,1.2-1.26,7.2,7.2,0,0,1,1-1.08,12.62,12.62,0,0,0,1.5-2c.42-.84,2.3-4.88,2.57-5.69a23.74,23.74,0,0,0,1.14-6.18,37.6,37.6,0,0,0-1.74-8.57c-.3-.66-.78-1-1.2-1.74S269.75,282,269,281a8.57,8.57,0,0,1-1.14-1.56c-.31-.6-.48-3.7-1.5-4.72s-2.58-3.24-4.38-3.12a6.39,6.39,0,0,0-4.31,2.88c-.36.9-1.26,2.28-1.26,3.48s.6,2.76.66,3.83-1.74,3.12-2,3.66a22.87,22.87,0,0,0-2,3.48,71.52,71.52,0,0,0-2.4,7.37,30.82,30.82,0,0,0-.78,4.37,46.11,46.11,0,0,0,.24,4.92,40.8,40.8,0,0,1,.72,5.69,6.5,6.5,0,0,1-1.14,2.82c-.53.66-2.63,1.44-3,2s-.78,1-.55,1.08.66.48.9.12-.12.3.3.18a1.93,1.93,0,0,0,.56-.27h0a2.85,2.85,0,0,0,.33-.25s-.53.65-.05.59a5.36,5.36,0,0,0,1.23-.46l.27-.13s-.61.65-.07.53a4.86,4.86,0,0,0,1.62-.82,10.53,10.53,0,0,1,1.92-.72c.24-.06,1-.72.78-1.32s-.6-2.21-.83-2.58a3,3,0,0,1-.6-2.21c0-1.54,2.1-9.17,2.34-10.48a8.38,8.38,0,0,1,1.2-3.42c.54-.6,1.14-.6,1.56-2s.12-4.92,1-6.18a25.05,25.05,0,0,0,1.91-2.57,3.51,3.51,0,0,1,1.26-2.21C262.73,282.11,263.81,281.93,264.71,282.71Z" fill="#020202"/>
 
                <path d="M266.05,269.07a4.34,4.34,0,0,0-1.17,1.13c-.33.43-.66.88-1,1.3s-.72.83-1.08,1.27a4.45,4.45,0,0,0-.48.66,1.61,1.61,0,0,0-.2.77l-.12,0a.71.71,0,0,1,.41-.31,2.46,2.46,0,0,1,.47-.1c.32-.05.64,0,.93-.1l.92-.18.48-.08a1.8,1.8,0,0,1,.52.05,3.56,3.56,0,0,1,.87.44,5.35,5.35,0,0,1,.77.58c.24.2.43.47.71.55a1.48,1.48,0,0,0,.87-.18h0m0,0a3.36,3.36,0,0,1-.42.22.93.93,0,0,1-.49.07,1,1,0,0,1-.46-.21l-.37-.3a6.3,6.3,0,0,0-.76-.51,4.31,4.31,0,0,0-.81-.39,2,2,0,0,0-.87,0l-.93.15c-.34,0-.64,0-1,0a2.22,2.22,0,0,0-.45.05.57.57,0,0,0-.34.22h0a.05.05,0,0,1-.08,0h0a.05.05,0,0,1,0-.05,1.79,1.79,0,0,1,.25-.81,6.45,6.45,0,0,1,.47-.69c.32-.45.64-.9,1-1.34s.68-.87,1-1.3a3.36,3.36,0,0,1,1.32-1Z" fill="#ffde11"/>
 
                <path d="M268.26,272.06a1.94,1.94,0,0,1-1.26.57,10.6,10.6,0,0,1-1.38,0,4.2,4.2,0,0,0-1.32.12,1.93,1.93,0,0,0-1.06.77l-.11-.08a11.68,11.68,0,0,1,.84-1.12,4.61,4.61,0,0,1,1-1,3.06,3.06,0,0,1,.67-.28c.22-.07.45-.13.68-.18a9.34,9.34,0,0,1,1.38-.19h0m0,0c-.45.11-.9.23-1.34.36l-.65.23a3.28,3.28,0,0,0-.6.28,5.71,5.71,0,0,0-1,.89c-.31.34-.61.69-.91,1h0a.08.08,0,0,1-.11,0h0a.09.09,0,0,1,0-.1,2.45,2.45,0,0,1,1.15-.77,4.18,4.18,0,0,1,1.36-.28c.46,0,.91.06,1.35,0a2.13,2.13,0,0,0,1.25-.37m0,0,0,0s0,0,0,0Z" fill="#ffde11"/>
 
                <path d="M253.05,272.1a7.65,7.65,0,0,1,2,0,13,13,0,0,1,1.93.42c.31.1.62.18.94.3a2.28,2.28,0,0,1,.82.55l.33.36a3.6,3.6,0,0,0,.4.28l.43.24a2.31,2.31,0,0,1,.42.27l-.14.12c-.39-.44-.79-.87-1.22-1.27-.22-.2-.44-.39-.67-.57a6.89,6.89,0,0,0-.71-.49,3.05,3.05,0,0,0-.78-.35c-.27-.08-.57-.14-.86-.23a2.73,2.73,0,0,1-.83-.39,1.49,1.49,0,0,1-.55-.71m0,0a1.53,1.53,0,0,0,.6.61,2.62,2.62,0,0,0,.81.29l.87.19a3.05,3.05,0,0,1,.86.35,6.84,6.84,0,0,1,1.42,1.1,12.67,12.67,0,0,1,1.18,1.35h0a.09.09,0,0,1,0,.13.09.09,0,0,1-.12,0,1.93,1.93,0,0,0-.36-.28l-.42-.28a2.7,2.7,0,0,1-.4-.29c-.11-.12-.21-.25-.33-.36a1.72,1.72,0,0,0-.81-.48c-.31-.09-.63-.15-.95-.22-.64-.13-1.26-.3-1.9-.41a11.43,11.43,0,0,0-1.93-.23h0Z" fill="#ffde11"/>
 
                <path d="M260.5,274.26a9.49,9.49,0,0,0-1.15-1.54,3.44,3.44,0,0,0-1.48-1.2,10.29,10.29,0,0,1-1.72-.95,6.54,6.54,0,0,1-1.38-1.4v0m0,0a18.54,18.54,0,0,0,1.54,1.18l.8.55c.28.19.55.34.83.53a11.21,11.21,0,0,1,1.59,1.17,4.56,4.56,0,0,1,.61.78,2.17,2.17,0,0,1,.39.91s0,0,0,0a0,0,0,0,1,0,0s0,0,0,0h0Z" fill="#ffde11"/>
 
                <path d="M260.9,274.25a4,4,0,0,0-.33-1.35,2.18,2.18,0,0,0-.33-.62,2.69,2.69,0,0,0-.55-.46,3.31,3.31,0,0,1-.58-.47,2.9,2.9,0,0,1-.44-.6,3.63,3.63,0,0,0-.81-1.15v0h0a1.44,1.44,0,0,1,.62.41,5,5,0,0,1,.42.6,5.87,5.87,0,0,0,.39.58c.15.18.31.35.48.52l.52.52a2.91,2.91,0,0,1,.47.58,1.91,1.91,0,0,1,.15,1.46h0Z" fill="#ffde11"/>
 
                <path d="M259.86,274.68a3.43,3.43,0,0,0-.72-.47,6.91,6.91,0,0,0-.79-.33,8.09,8.09,0,0,0-.83-.28,8.74,8.74,0,0,0-.87-.14l-.44-.06a.56.56,0,0,0-.36,0c-.1.05-.23.16-.36.23a2.6,2.6,0,0,1-.42.19,2.49,2.49,0,0,1-1.8-.07v0h0a3.47,3.47,0,0,0,1.69-.18,2.54,2.54,0,0,0,.38-.16c.13-.06.23-.14.4-.22a.62.62,0,0,1,.27-.05,1,1,0,0,1,.24.05l.43.12a8.26,8.26,0,0,0,.86.2c.29.06.58.08.88.16a2.37,2.37,0,0,1,1.47,1m0,0s0,0,0,0,0,0,0,0Z" fill="#ffde11"/>
 
                <path d="M262.3,273.91a.35.35,0,0,1,0-.33.51.51,0,0,1,.21-.25l.27-.09a.78.78,0,0,0,.24-.16l.39-.36a3.83,3.83,0,0,1,.46-.33h0a1.05,1.05,0,0,1-.28.53,1.18,1.18,0,0,1-.52.27.94.94,0,0,0-.28.1,1.8,1.8,0,0,0-.19.2,1.24,1.24,0,0,0-.29.39h0Z" fill="#fcee23"/>
 
                <path d="M260.65,274.39a1.63,1.63,0,0,0-.53-1.24,3.23,3.23,0,0,0-.56-.48,6.67,6.67,0,0,0-.64-.37,2.9,2.9,0,0,1-.6-.44,2.53,2.53,0,0,1-.48-.6,1.54,1.54,0,0,1,0-1.5m0,0a2,2,0,0,0,.26,1.35,3.74,3.74,0,0,0,.41.55c.17.17.34.34.53.5a4.23,4.23,0,0,0,.6.41,5.4,5.4,0,0,1,.65.4,1.3,1.3,0,0,1,.44.64.94.94,0,0,1,0,.77Z" fill="#fcee23"/>
 
                <path d="M264.71,270.19a1,1,0,0,1,.35.58,2,2,0,0,1,0,.69,3.82,3.82,0,0,1-.12.66,2.16,2.16,0,0,1-.26.65,1.16,1.16,0,0,1-.55.45,3,3,0,0,1-.67.11,3.53,3.53,0,0,0-.65.11.84.84,0,0,0-.49.36.53.53,0,0,0-.08.27.08.08,0,0,0,0,.07v0h0a.1.1,0,0,0-.05.06,3.14,3.14,0,0,1,.13-.68,9.47,9.47,0,0,1,.48-1.25,8.36,8.36,0,0,0,.51-1.19,1.26,1.26,0,0,0,0-.61.81.81,0,0,0-.38-.49v0h0a.79.79,0,0,1,.49.47,1.19,1.19,0,0,1,.07.7,5.82,5.82,0,0,1-.45,1.27c-.17.4-.36.8-.5,1.21a3.2,3.2,0,0,0-.15.61.16.16,0,0,1-.09.13.13.13,0,0,1-.12,0,.2.2,0,0,1-.11-.09.13.13,0,0,1,0-.08v-.15a.74.74,0,0,1,.15-.34,1.15,1.15,0,0,1,.59-.37c.21,0,.44-.08.66-.1a1.74,1.74,0,0,0,.62-.17.93.93,0,0,0,.41-.42,4.77,4.77,0,0,0,.37-1.22,1.61,1.61,0,0,0-.2-1.23v0Z" fill="#fcee23"/>
 
                <path d="M260.28,274.62A3.48,3.48,0,0,0,259,273.4a4,4,0,0,0-1.64-.78c-.3,0-.6,0-.91-.05a2.32,2.32,0,0,1-.94-.23,3.94,3.94,0,0,1-1.34-1.32v0h0a7.54,7.54,0,0,0,1.45,1.07,2.4,2.4,0,0,0,.83.24,5.71,5.71,0,0,1,.92.16c.29.11.58.23.86.36s.58.23.86.37a3,3,0,0,1,.76.57,1.66,1.66,0,0,1,.43.83v0Z" fill="#fcee23"/>
 
                <path d="M263.7,274a1,1,0,0,1,.48-.72,2.9,2.9,0,0,1,.41-.16c.13,0,.26-.12.38-.18a2,2,0,0,1,.83-.21,2.66,2.66,0,0,0,.4,0,.28.28,0,0,0,.28-.18h0a.33.33,0,0,1-.24.39,1.29,1.29,0,0,1-.43.07c-.28,0-.53,0-.81.06a.89.89,0,0,0-.39.12,1.63,1.63,0,0,0-.31.27c-.2.18-.38.34-.59.56m0,0v0Z" fill="#fcee23"/>
 
                <path d="M258.85,274.38a.7.7,0,0,0-.23-.28c-.09-.09-.19-.18-.27-.27a4.19,4.19,0,0,0-.56-.48,1.8,1.8,0,0,0-.66-.34,1.94,1.94,0,0,0-.76,0l-.75.11c-.25.05-.5.11-.76.14a1.47,1.47,0,0,1-.83-.09.78.78,0,0,1-.5-.62h0a.82.82,0,0,0,.56.43,2.12,2.12,0,0,0,.71,0,6.2,6.2,0,0,1,1.55-.12c.26,0,.52.06.77.1a2.54,2.54,0,0,1,.77.23,1.8,1.8,0,0,1,.6.53l.23.31a.59.59,0,0,1,.14.38m0,0v0Z" fill="#fcee23"/>
 
                <path d="M256.57,287.38c.24.19-1,1.68-1.27,3.41s-.66,2.94-.66,4-.42,5.1-2.1,7.25a21.07,21.07,0,0,1-3.71,3.9c-.24.06-.72-.18-.55-1.08s.78-1.2,1.44-3.24,3.11-5.69,3.17-7.31a15.79,15.79,0,0,1,1.68-5.39C255.05,288.16,256.22,287.09,256.57,287.38Z" fill="#020202"/>
 
                <path d="M269.57,286.43a3.23,3.23,0,0,1,1.61.6,15.93,15.93,0,0,1,2.34,2.09c.41.55,3.18,3,4,4.86a15.1,15.1,0,0,1,1.08,3.48,23.36,23.36,0,0,0,.47,3.47c.3.6,1.2,2.1,1.14,2.7s-.11.9-.35.72-2.46-1.44-3.06-2.88a31,31,0,0,0-1.8-3.66,18.81,18.81,0,0,1-1.56-2.76,14,14,0,0,0-.6-3.11c-.42-.78-1.62-1.62-1.86-2s-.66-1.8-.89-2.21S269.39,286.55,269.57,286.43Z" fill="#231f20"/>
 
                <path d="M271.24,288.29c.32.34,1.68,1.55,2.16,2a17.06,17.06,0,0,1,2.52,3.54c.72,1.38,1.26,4.43,1.68,5.33s1.38,2.94,1.56,3.36.59,1.32.3,1.26a6.82,6.82,0,0,1-2.21-2.1,27.09,27.09,0,0,1-1.5-2.94,24.64,24.64,0,0,0-1.93-3.35c-.22-.44-.06-1.5-.3-2.34A10.83,10.83,0,0,0,271.6,290C270.65,289,269.51,286.37,271.24,288.29Z" fill="#e6e7e7"/>
 
                <path d="M256.44,288.1a21.65,21.65,0,0,0-1.14,2.82,26.93,26.93,0,0,0-.48,3.59c0,.78-.36,5.39-2.7,8.28-1.76,2.17-1.91,2-1.91,2a27.66,27.66,0,0,0,2.57-3.53,13.3,13.3,0,0,0,1.68-5.88C254.59,293.68,254.76,290.62,256.44,288.1Z" fill="#fff"/>
 
                <path d="M253.2,291.46a9.82,9.82,0,0,1-.54,3.24c-.36,1.24-.9,2.58-1.07,3.11s-1.38,2.58-1.62,3.06l-.24.48a23.29,23.29,0,0,1,1.08-2.52,20.71,20.71,0,0,0,1.08-2.57A29.64,29.64,0,0,0,253.2,291.46Z" fill="#fff"/>
 
                <path d="M259.56,277.32a1.56,1.56,0,0,1,.54-.9c.42-.3.72-.48,1-.24s.61.72.83.82,1.2,0,1.38.24.18.6-.24.66-1.28.35-1.38.72a5,5,0,0,1-1.5,2.34c-.21.22-.66.18-.72,0a8.59,8.59,0,0,1-.6-2.16c-.09-.79-.55-.66-.59-1.14s-.07-.82.47-.71S259.43,277.38,259.56,277.32Z" fill="#f15b2b" stroke="#231f20" stroke-miterlimit="10" stroke-width="0.28"/>
 
                <path d="M258.54,278s.36-1,1.14-.19c.23.26.27-1.08,1-1.13s.43,1.32.61,1.08c.71-1,1.13.24,1.25.42s1.2-.18,1-.56a1.57,1.57,0,0,0-1.2-.71c-.6-.12-.71-.66-1.31-.78s-.83.06-1.32.42a1.26,1.26,0,0,1-1,.36.6.6,0,0,0-.6.29v.48C258.12,277.85,258.24,277.8,258.54,278Z" fill="#f9c6d6"/>
 
                <path d="M262.74,276.24c-.14-.13.06-.83.6-.72a1.51,1.51,0,0,1,.83.55S263.69,277.08,262.74,276.24Z" fill="#ec2227"/>
 
                <path d="M257.77,276s.11-.86.6-.72.67.83.6.83A1.11,1.11,0,0,1,257.77,276Z" fill="#ec2227"/>
 
                <ellipse cx="263.36" cy="276.15" rx="0.15" ry="0.09" fill="#231f20"/>
 
                <ellipse cx="258.49" cy="275.91" rx="0.15" ry="0.09" fill="#231f20"/>
 
                <path d="M260.46,279.88a8.77,8.77,0,0,1,.83-1.91c.16-.26.41-.55.75-.37s.37.53.5.78h0s0-.34,0-.34c-.13-.25-.27-.48-.42-.71-.34-.31-.65,0-.83.29a7.9,7.9,0,0,0-.84,1.93c0,.09,0,.27,0,.33Z" fill="#231f20"/>
 
                <path d="M258.54,278.2a.9.9,0,0,1,.36-.55c.27-.13.66.13.77.38,0-.06,0,.1,0,.13l.06.4c.05.32.08.65.1,1s0,0,0-.1c0-.32-.06-.64-.09-.95a4.19,4.19,0,0,0-.11-.78.71.71,0,0,0-.72-.43c-.24.07-.37.39-.43.6s0,.28,0,.34Z" fill="#231f20"/>
 
            </g>
 
        </g>
 
        <g id="Layer_1_copy" data-name="Layer 1 copy">
 
            <path d="M40.63,307.14c-.39-1.23,1.58-4,.42-14.73-1-9.12-15.28-9.4-18.51-3.23-1.64,3.13-1,14.59-1.83,15.85S12.16,316.75,11,319.77s-3.42,6.31-2.81,10.52c.19,1.32,1,3.22.91,3.29-3.09-.07-1.3,3.44-2.52,5.05-1.93,2.51-3.39,1.18-4.28,3-1.8,3.72,7.37,5.68,8.35,6.52s5.62,3.37,7.58,3.09,2.38-1.82,3.37-2.53,15.08,0,15.5-.14c1-.35,1.8,1.83,5.53,2.16,5.32.46,17.68-2.44,17.62-4.75a8.37,8.37,0,0,0-1.83-2.67,19.25,19.25,0,0,0,.91-6c-.21-2.74-5.94-.65-5.82-2.24.34-5-2.9-3.7-2.84-4.58.57-8-3.87-13.63-4.17-14.71-.18-.62-4.77-5.19-5.9-8.7Z" fill="#231f20"/>
 
            <path d="M18,351.69c-2.24,0-6.55-2.36-7.53-3.21a11.26,11.26,0,0,0-1.83-.77c-2.35-.87-5.91-2.19-6.72-4.23a2.36,2.36,0,0,1,.1-2A2.5,2.5,0,0,1,3.85,340a4.09,4.09,0,0,0,2.43-1.65,4,4,0,0,0,.44-2.13c0-1.28.09-2.85,1.87-3.06L8.52,333a16.81,16.81,0,0,1-.72-2.61c-.48-3.32.78-6.09,1.88-8.53.35-.77.68-1.49.94-2.19.94-2.48,6.08-9.7,8.56-13.17.58-.81,1-1.4,1.16-1.64.29-.44.39-3.07.48-5.39.15-4,.31-8.52,1.32-10.43,1.73-3.3,6.7-5.1,11.58-4.18,4.41.84,7.29,3.66,7.71,7.56.81,7.53.1,11.15-.28,13.11A4,4,0,0,0,41,307c.76,2.36,3.2,5.29,4.65,7a7,7,0,0,1,1.25,1.68,8.36,8.36,0,0,0,.56,1.07,23.77,23.77,0,0,1,3.64,13.69l.33.1c1,.26,2.76.75,2.5,4.56.2.26,1.13.26,1.81.26,1.63,0,3.87,0,4,1.93a16.45,16.45,0,0,1-.82,5.68c0,.06,0,.12-.05.17.48.51,1.77,2.1,1.79,2.79a1.54,1.54,0,0,1-.57,1.13c-2.45,2.32-12.83,4.45-17.49,4a8.1,8.1,0,0,1-4.44-1.71c-.46-.34-.74-.53-.92-.46a24.1,24.1,0,0,1-3.85,0c-3.51-.1-10.82-.29-11.56.11a4.54,4.54,0,0,0-.77.81,4.15,4.15,0,0,1-2.77,1.78ZM9.05,334c-1.36,0-1.45.79-1.5,2.3a4.51,4.51,0,0,1-.61,2.59,4.78,4.78,0,0,1-2.85,1.94,1.78,1.78,0,0,0-1.39,1,1.63,1.63,0,0,0-.08,1.35c.68,1.69,4.17,3,6.26,3.77a8.48,8.48,0,0,1,2.07.91c1,.85,5.48,3.25,7.25,3a3.35,3.35,0,0,0,2.26-1.5,5.29,5.29,0,0,1,.93-1c.67-.47,4.58-.46,12-.26,1.74,0,3.38.09,3.61.06.54-.2,1,.16,1.62.58a7.27,7.27,0,0,0,4,1.56c4.72.42,14.8-1.87,16.86-3.82a.78.78,0,0,0,.31-.51,8.77,8.77,0,0,0-1.53-2.24h0l-.15-.17c-.16-.18-.13-.31,0-.82A16,16,0,0,0,59,337.4c-.08-1.09-1.38-1.18-3.2-1.18-1.1,0-2,0-2.39-.45a.9.9,0,0,1-.23-.68c.22-3.14-1.06-3.49-1.9-3.71-.41-.11-1-.27-.94-.87a23.12,23.12,0,0,0-3.52-13.31,7.7,7.7,0,0,1-.63-1.25,14.35,14.35,0,0,0-1.09-1.38c-1.49-1.79-4-4.79-4.79-7.3h0a4,4,0,0,1,.13-1.95c.37-1.9,1.07-5.46.27-12.86-.38-3.52-3-6.08-7.06-6.84-4.53-.86-9.12.76-10.69,3.75-.93,1.74-1.11,6.37-1.25,10.09-.13,3.32-.22,5.22-.63,5.82-.16.24-.59.84-1.17,1.66-2.26,3.16-7.57,10.59-8.46,13-.28.73-.63,1.47-1,2.25-1.12,2.45-2.28,5-1.83,8.07a16.56,16.56,0,0,0,.68,2.48c.28.81.32,1,.12,1.16l-.13.12H9.05Z" fill="#231f20"/>
 
            <path d="M35.24,299.56c0-.07-.82-5.44,2.59-4.95,2.47.35,2.5,3.59,2.42,4.53s-.63,3-1.36,2.75-.1-.11,0-.16c1.32-.37,1.36-4.57.62-5.28a1.71,1.71,0,0,0-2.32.11,4.93,4.93,0,0,0-.75,3.49c0,.14-1.25-.42-1.25-.49Z" fill="#fff"/>
 
            <path d="M45.26,336.18c-.14.28-8.69,9.51-5.19,12.62,2.53,2.25,9.26.84,11.79.28s8-2,7.71-3.5-2.24-.71-1.54-2.67,1.12-4.63.7-5.75c-.79-2.12-5.32.84-5.61-1.12s.14-3.72-2.1-4.56-5.62,4.42-5.76,4.69Z" fill="#fdb826"/>
 
            <path d="M20.64,333.37c-.62-.31-.81-.18-1.33.14-1,2.88-3.32,3.93-4.07,3.93a5.62,5.62,0,0,1-2.59-.62c-1.68-.63-3-3.05-3.09-3C6,335,9,337.73,7.74,339.2c-.77.9-3.55.85-4.38,2.73-1.21,2.67,4,2.59,6.64,4,3.47,1.84,6.16,5.2,9.22,4.05,3.4-1.28,1.51-6.05,1.65-8.27s1.83-7.35-.21-8.33Z" fill="#fdb826"/>
 
            <path d="M39.74,303.66c0-1.34-1.6-2-2-2.22-.56-.32-2-1.74-3.78-1.65a4.27,4.27,0,0,0-2.13.53c-1.88,1.25-4.63,1.81-5.42,2.5-1,.85-.42,1.74.13,2.36.71.8,6.62,3.47,8.4,3.47,1,0,3.61-1.18,2.71-1.91-.49-.4-2.57.75-5.82-.85-1.8-.88-4.27-1.15-4.14-1.77.06-.25.19-.26.36-.27s.18.44.4.58c2.36,1.51,6.33,2.52,9,1.77.71-.19,1-.91,1.25-1.3s1.07-.38,1.07-1.23Z" fill="#fdb826" fill-rule="evenodd"/>
 
            <path d="M34.94,309c-1.93,0-7.93-2.73-8.71-3.6a2.49,2.49,0,0,1-.76-1.72,1.75,1.75,0,0,1,.67-1.21,7.83,7.83,0,0,1,2.16-1A16.16,16.16,0,0,0,31.6,300a4.77,4.77,0,0,1,2.33-.6,5.75,5.75,0,0,1,3.58,1.4,3.19,3.19,0,0,0,.42.3l.15.07c.62.32,2.06,1.06,2.06,2.51a1.38,1.38,0,0,1-.87,1.27,1.59,1.59,0,0,0-.27.18l-.12.21a2.69,2.69,0,0,1-1,1.1.8.8,0,0,1,.26.92C37.87,308.26,35.81,309,34.94,309Zm-.82-8.84H34a3.88,3.88,0,0,0-1.93.46,17,17,0,0,1-3.46,1.6,8.6,8.6,0,0,0-1.92.86,1,1,0,0,0-.39.65,1.7,1.7,0,0,0,.57,1.12c.62.73,6.44,3.33,8.09,3.33.82,0,2.44-.82,2.49-1.17a2.82,2.82,0,0,0-.71,0,8.49,8.49,0,0,1-5-.79,15.6,15.6,0,0,1-2.19-.82l-.22-.06c-1.27-.39-2.18-.66-2-1.39a.68.68,0,0,1,.72-.59.65.65,0,0,1,.65.56l0,.12a10.35,10.35,0,0,0,1,.57,15,15,0,0,1,2.27.83l.09.05a10.3,10.3,0,0,0,5.22.24,1.58,1.58,0,0,0,.86-.88l.15-.25a1.42,1.42,0,0,1,.55-.45c.32-.18.45-.26.45-.56,0-.94-1.13-1.53-1.62-1.78l-.17-.09a4.59,4.59,0,0,1-.51-.35A5.09,5.09,0,0,0,34.12,300.2Z" fill="#231f20"/>
 
            <path d="M34.6,300.65c-.31,0,1.12-.17,1,.46,0,.11.07.24-.28.24S35.48,300.54,34.6,300.65Z" fill="#231f20" fill-rule="evenodd"/>
 
            <path d="M35.37,301.45c-.2,0-.23-.2-.25-.33s0-.34-.28-.37h-.28a.13.13,0,0,1-.11-.06l0-.06,0-.05a.09.09,0,0,1,.07,0h.22a1.93,1.93,0,0,1,.71.12.45.45,0,0,1,.28.46v.05a.25.25,0,0,1-.06.2A.45.45,0,0,1,35.37,301.45Zm-.12-.66a1.09,1.09,0,0,1,.07.3.47.47,0,0,0,0,.16.4.4,0,0,0,.19,0v-.13a.18.18,0,0,0-.06-.17A.56.56,0,0,0,35.25,300.79Z" fill="#231f20"/>
 
            <path d="M33.34,300.68c.07,0-.84-.28-.94,0s.21.32.49.25.39-.25.46-.25Z" fill="#231f20"/>
 
            <path d="M32.65,301.06a.39.39,0,0,1-.31-.11.27.27,0,0,1,0-.31c.09-.26.53-.21.88-.12.18,0,.28.06.27.17v.09h-.08l0,0a1,1,0,0,1-.4.21A1.26,1.26,0,0,1,32.65,301.06Zm.05-.4a.51.51,0,0,0-.17,0s0,0,0,0,0,.08,0,.1a.52.52,0,0,0,.37,0,.8.8,0,0,0,.25-.11A1.92,1.92,0,0,0,32.7,300.66Z" fill="#231f20"/>
 
            <path d="M32.46,299.7c0-.08.18-4.94-2.28-5.5-1.94-.44-2.7.17-3.47,1.25a7.18,7.18,0,0,0-.63,5.29c.74,1.79,3.4.47,3.36.08-1.06-.47-1.27-2.42-.69-4s2.88-1.52,3.22-.16a7.25,7.25,0,0,1,.31,3.07c-.07.24-.69.41-.69.41a1.33,1.33,0,0,0,.81-.31C32.45,299.75,32.44,299.78,32.46,299.7Z" fill="#fff" fill-rule="evenodd"/>
 
            <path d="M30,296.65c-.15-.26-.46,0-.68.37a1.54,1.54,0,0,0-.21,1.65c.14.27.35.27.46.12s-.12-.56,0-1,.35-.39.42-.69S30.13,296.8,30,296.65Z" fill="#fff"/>
 
            <path d="M37.34,299.42a.31.31,0,0,1-.31-.25.24.24,0,0,1,0-.12V299a2.17,2.17,0,0,1,.43-1.8.31.31,0,0,1,.41-.15.32.32,0,0,1,.15.42.29.29,0,0,1-.1.12,1.54,1.54,0,0,0-.28,1.31c0,.12.06.44-.24.5Z" fill="#fff"/>
 
            <path d="M23.24,305.63c-.13-.66-.5.38-.81.63-.73.59-2.46,2.56-2.78,2.81s1.59-.85,1.94-.71,2-1.16,1.65-2.73Z" fill="#fff"/>
 
            <path d="M19.87,313.94c-.56-.85-5.32,5.05-5.32,8.42,0,5,.63,5.05,1.2,6.59,0,.07-2.46.35-2.46,1.55,0,.36.78-.92,3.16-.92.07,0,2-.14,2.81.63.56.56.66,1.89.71,1.89,1.54,0,2.24.43,2.72,1.7,1.38,3.29-2.08,4.31-.21,13.48,0,.07.79.29.47-1.21-.66-3.09-.4-5.71.35-7.2a29,29,0,0,0,1.33,3.27,7.48,7.48,0,0,0,6.57,3.09c3.8-.07,6.94-3.16,7.56-2.82.32.17-1.87,2.29-1.68,3.65.13.91.08,1.75.85,1.88a3.79,3.79,0,0,1,.14-2.95c.78-1.23,1.75-3.23,1.75-3.23s5.71-5.46,6.18-10.59a28.42,28.42,0,0,0-3-14.05c-.77-1.5-1-3.48-1.64-4.38-1.61-2.19-1.91-4.69-2.19-4.84-.77-.42-2.65,1.56-3.94,1.7-1.64.21-3.87-.86-5.1-1.44-.94-.45-3.16-2-3.8-2s0,1.34-.28,1.88-2,2.11-2.24,3a13.81,13.81,0,0,1-.77,3.23c-.64,1.54-2.14,4.28-2.62,5.22a16.55,16.55,0,0,0-1.64,9.84,5.22,5.22,0,0,0-2.23-.48c-.84-1.05-1.46-5.16-1.25-6.7a11.09,11.09,0,0,1,1.07-3.6c.87-1.6,2.22-3.92,3.49-4.6Z" fill="#fff"/>
 
            <path d="M40.85,306.53c3.66,3.89,11.43,6.12,14.12,6.29a38.1,38.1,0,0,0,11-1.64c3.11-1.08,3.7,5.07,1.92,6.95a21.09,21.09,0,0,1-7.55,5.38c-7.29,2.91-11,1.47-11.84,1s-10.28-20.81-7.59-18Z" fill="#231f20"/>
 
            <path d="M50.91,325.81c-1.33-4.72-4.08-8.89-5.4-11.94-.51-1.15,3.75,5.95,6,11.58,0,0-.15.28-.28-.16Z" fill="#fff"/>
 
            <path d="M62.22,311.64l-.6.54a18.42,18.42,0,0,0,2.13,3.59c1.53,1.66,2.86,1.4,2.86,1.4S63,314.84,62.22,311.64Z" fill="#fff"/>
 
            <g id="sanitiser">
 
                <path d="M61.64,301.7a4.21,4.21,0,0,1-2.29-1.46,8,8,0,0,1-.16-1.09s-.23.57-2,.84-2.07-.21-2.07-.21a7.09,7.09,0,0,1,.14,1,3.57,3.57,0,0,1-1.63,2.12c-.13.14-1.14,1.06-1,1.65l2.67,15a1.34,1.34,0,0,0,1.51,1.15l7.28-1.12a1.35,1.35,0,0,0,1.1-1.56h0l-2-15.12C63.09,302.3,62.53,302.08,61.64,301.7Z" fill="#f0eff0"/>
 
                <polygon points="53.36 306.91 54.38 313.1 64.05 311.65 63.24 305.39 53.36 306.91" fill="#fff"/>
 
                <path d="M59.59,299.25a3.89,3.89,0,0,1-2.33.88,4.06,4.06,0,0,1-2.48-.14l-.51-3.31s.15.51,2.33.17,2.47-.91,2.47-.91Z" fill="#15bff1"/>
 
                <path d="M59.1,296c.12.25-1,.66-2.34.87s-2.44.15-2.5-.13,1-.66,2.34-.87S59,295.76,59.1,296Z" fill="#0797bf"/>
 
                <path d="M57.93,295.9s-.25.48-1.21.62a1.63,1.63,0,0,1-1.35-.23l-.43-2.77s.1.43,1.27.25,1.29-.64,1.29-.64Z" fill="#15bff1"/>
 
                <ellipse cx="56.19" cy="293.35" rx="1.3" ry="0.42" transform="translate(-44.07 12) rotate(-8.77)" fill="#0797bf"/>
 
                <path d="M55.76,307.54l-.13,0-.19,0-.15,0-.11,0c0,.07,0,.14,0,.23s0,.18,0,.26h.21l.21,0,.15,0,0,.2-.17,0-.19,0h-.2c0,.07,0,.19.05.34s0,.26,0,.33l-.28,0,0-.25c0-.14,0-.32-.08-.55a1.71,1.71,0,0,0-.06-.35l-.06-.43.17,0,.25,0,.26,0,.18,0Z" fill="#1867b1"/>
 
                <path d="M57,308.73l-.2,0-.25,0-.22,0-.19,0c0-.07,0-.17-.05-.32A4.8,4.8,0,0,0,56,308c0-.14,0-.28-.06-.4s0-.24-.06-.35l.29,0a2.2,2.2,0,0,0,0,.27c0,.13,0,.25.06.4s0,.31.07.44l0,.24h.23l.21,0,.14,0Z" fill="#1867b1"/>
 
                <path d="M57.46,308.67l-.28,0a2.42,2.42,0,0,0,0-.26c0-.13,0-.31-.08-.54l-.06-.36c0-.13,0-.28-.07-.43l.29,0a3.24,3.24,0,0,0,.06.4c0,.14,0,.27,0,.37s.05.36.08.51S57.45,308.61,57.46,308.67Z" fill="#1867b1"/>
 
                <path d="M58.53,307.44a.54.54,0,0,1,0,.31.45.45,0,0,1-.2.23.53.53,0,0,1-.15.08l-.18,0,.08.47-.29,0s0-.13,0-.27,0-.31-.09-.58c0-.09,0-.2-.05-.31l-.07-.42h.19A1.65,1.65,0,0,1,58,307a.65.65,0,0,1,.21,0,.49.49,0,0,1,.19.16A.54.54,0,0,1,58.53,307.44Zm-.28.06a.36.36,0,0,0-.07-.17.34.34,0,0,0-.12-.12l-.1,0h-.14a1,1,0,0,0,0,.17,1.39,1.39,0,0,1,0,.23c0,.05,0,.11,0,.19l0,.13h0l.1,0a.19.19,0,0,0,.09-.05.42.42,0,0,0,.09-.14A.41.41,0,0,0,58.25,307.5Z" fill="#1867b1"/>
 
                <path d="M59.64,307.29a.55.55,0,0,1,0,.31.74.74,0,0,1-.2.23l-.15.07-.18,0,.07.47-.28,0s0-.14,0-.27l-.09-.59c0-.09,0-.2-.05-.31s0-.26-.07-.41l.1,0h.09a1.22,1.22,0,0,1,.33,0,.46.46,0,0,1,.21.05.47.47,0,0,1,.19.15A.6.6,0,0,1,59.64,307.29Zm-.28,0a.49.49,0,0,0-.06-.17.28.28,0,0,0-.13-.11.17.17,0,0,0-.1,0h-.14a.65.65,0,0,0,0,.17c0,.1,0,.17,0,.23s0,.11,0,.19l0,.13h0l.11,0,.08-.05a.33.33,0,0,0,.1-.14.67.67,0,0,0,0-.2Z" fill="#1867b1"/>
 
                <path d="M60.88,308.14l-.2,0-.27,0-.24,0-.19,0a1.52,1.52,0,0,0,0-.27c0-.14,0-.31-.08-.56,0-.1,0-.21,0-.35s-.05-.27-.07-.41l.18,0,.24,0,.28-.05.18,0,0,.23h-.12l-.2,0-.16,0-.12,0a1.77,1.77,0,0,0,0,.21c0,.08,0,.16,0,.25h.11l.11,0,.22,0,.16,0,0,.19-.17,0-.21,0h-.22a1.76,1.76,0,0,0,0,.27,2.07,2.07,0,0,0,0,.23l.13,0,.17,0,.19,0,.12,0Z" fill="#1867b1"/>
 
                <path d="M62.2,307.85,62,308a3.14,3.14,0,0,0-.2-.26l-.36-.41h0s0,0,.07-.06l.08-.09a.53.53,0,0,0,0-.12.33.33,0,0,0,0-.14.21.21,0,0,0,0-.13.22.22,0,0,0-.1-.09h-.24c0,.11,0,.22,0,.32s0,.19,0,.29,0,.3.08.47l0,.31-.28,0s0-.12,0-.24,0-.32-.08-.56a2.21,2.21,0,0,0-.05-.33c0-.13,0-.28-.08-.46H61l.15,0,.24,0a.58.58,0,0,1,.19,0,.45.45,0,0,1,.21.12.49.49,0,0,1,.1.22.57.57,0,0,1,0,.26.6.6,0,0,1-.14.21h0a3.31,3.31,0,0,1,.28.31C62.09,307.76,62.17,307.81,62.2,307.85Z" fill="#1867b1"/>
 
                <path d="M55.17,311a.46.46,0,0,1,0,.23.48.48,0,0,1-.12.16.52.52,0,0,1-.19.11,1.09,1.09,0,0,1-.24.07l-.14,0h-.09l-.07-.23h.09l.14,0,.13,0,.11-.06a.22.22,0,0,0,.07-.09.2.2,0,0,0,0-.11.31.31,0,0,0,0-.1.25.25,0,0,0-.1-.08l-.13-.05-.13-.07a.7.7,0,0,1-.17-.13.46.46,0,0,1-.08-.19.48.48,0,0,1,0-.17.39.39,0,0,1,.08-.14.52.52,0,0,1,.18-.15.92.92,0,0,1,.27-.08l.13,0h.08l.06.23h-.19l-.12,0-.1.06a.22.22,0,0,0-.05.08.14.14,0,0,0,0,.09.12.12,0,0,0,.05.1.25.25,0,0,0,.1.08l.11.05.13.06a.45.45,0,0,1,.17.13A.4.4,0,0,1,55.17,311Z" fill="#1867b1"/>
 
                <path d="M56.58,311.24l-.26.12a1,1,0,0,0-.08-.18l-.16-.32-.46.08c0,.14,0,.26,0,.36a.89.89,0,0,0,0,.19l-.28,0,.11-.62c.06-.37.11-.7.17-1l.29,0c.15.31.31.62.47.93S56.56,311.2,56.58,311.24Zm-.58-.57-.14-.28-.12-.27h0c0,.08,0,.18,0,.32s0,.22,0,.31h0l.34-.05Z" fill="#1867b1"/>
 
                <path d="M57.63,309.5c0,.14,0,.28.06.44s0,.26.05.31l.07.48,0,.3-.22.1c-.18-.23-.36-.43-.52-.63l-.31-.38h0c0,.19.06.41.11.65s.06.4.06.44l-.26.05s0-.12,0-.24,0-.29-.07-.51a3.22,3.22,0,0,0-.06-.35c0-.14,0-.29-.07-.44l.24-.1.31.4a6,6,0,0,0,.49.55h0c0-.13-.05-.31-.09-.51s-.06-.38-.08-.53Z" fill="#1867b1"/>
 
                <path d="M58.45,311l-.29,0s0-.13,0-.26,0-.31-.08-.54l0-.35c0-.14-.05-.28-.07-.43l.28,0,.06.4c0,.15,0,.27.06.37s0,.36.08.51S58.44,311,58.45,311Z" fill="#1867b1"/>
 
                <path d="M59.48,309.46l-.13,0-.29,0c0,.11,0,.21,0,.31s0,.21,0,.33.05.28.07.43a1.72,1.72,0,0,1,0,.28l-.28.05s0-.13,0-.26,0-.28-.07-.46,0-.22-.05-.31,0-.21,0-.31l-.28,0-.14,0,0-.24.22,0,.33-.05.36-.05.21,0Z" fill="#1867b1"/>
 
                <path d="M60.1,310.75l-.28,0c0-.05,0-.13,0-.26s0-.32-.08-.54l0-.36c0-.14,0-.28-.07-.43l.28,0c0,.12,0,.25.06.4s0,.27.06.37.05.35.08.51S60.09,310.69,60.1,310.75Z" fill="#1867b1"/>
 
                <path d="M61.15,310.12a.36.36,0,0,1,0,.23.52.52,0,0,1-.13.17.72.72,0,0,1-.19.11l-.24.07h-.23l-.06-.23h.08l.14,0,.13,0a.24.24,0,0,0,.11-.06.27.27,0,0,0,.07-.08.21.21,0,0,0,0-.11.22.22,0,0,0-.05-.11l-.1-.07-.12-.06-.13-.06a.45.45,0,0,1-.17-.13.39.39,0,0,1-.08-.2.22.22,0,0,1,0-.16.37.37,0,0,1,.07-.14.4.4,0,0,1,.19-.15,1.07,1.07,0,0,1,.27-.09l.13,0h.07l.06.24h-.19l-.12,0-.1.06,0,.07a.17.17,0,0,0,0,.1.14.14,0,0,0,0,.1.39.39,0,0,0,.1.08l.11,0,.14.06a.7.7,0,0,1,.17.13A.43.43,0,0,1,61.15,310.12Z" fill="#1867b1"/>
pinaxcon/templates/site_base.html
Show inline comments
 
{% load static %}
 
{% load i18n %}
 
{% load sitetree %}
 
{% load sass_tags %}
 
{% load capture_tags %}
 

	
 
{% capture as head_title silent %}{% block head_title_base %}{% if SITE_NAME %}{{ SITE_NAME }} | {% endif %}{% block head_title %}{% endblock %}{% endblock %}{% endcapture %}
 

	
 
<!DOCTYPE html>
 

	
 
<html lang="en">
 
<head>
 
  <meta charset="utf-8">
 
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
 
  <meta name="description" content="">
 
  <meta name="viewport" content="width=device-width, initial-scale=1">
 

	
 
  <title>{{ head_title }}</title>
 

	
 
  <meta property="og:type" content="website" />
 

	
 
  <!-- Cards -->
 
  <meta property="og:title" content="{{ head_title }}">
 
  <meta property="og:description" content="linux.conf.au 2022 - Jan 14-16 2022, Online, Worldwide" />
 
  <meta property="og:description" content="Everything Open 2023 - March 14-16 2023, Melbourne, Australia" />
 
  <meta property="og:url" content="{{ request.scheme }}://{{ request.get_host }}{{ request.path }}">
 
  <meta name="twitter:site" content="@linuxconfau">
 
  <meta name="twitter:site" content="@_everythingopen">
 
  <meta name="twitter:image:alt" content="{{ head_title }}" />
 
  <meta name="twitter:card" content="summary">
 
  <meta name="twitter:image" content="{{ request.scheme }}://{{ request.get_host }}/media/img/card/lca_badge.1ef714c1.png" />
 
  <meta property="og:image" content="{{ request.scheme }}://{{ request.get_host }}/media/img/card/lca_badge.1ef714c1.png" />
 
  <meta name="twitter:image" content="{{ request.scheme }}://{{ request.get_host }}/media/img/card/eo-badge.ba30d338.png" />
 
  <meta property="og:image" content="{{ request.scheme }}://{{ request.get_host }}/media/img/card/eo-badge.ba30d338.png" />
 
  <meta property="og:image:width" content="400" />
 
  <meta property="og:image:height" content="400" />
 

	
 
  {% block styles %}
 
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
 
  <link href="{% sass_src 'scss/app.scss' %}" rel="stylesheet" type="text/css" />
 
  {% block extra_style %}{% endblock %}
 
  {% endblock %}
 

	
 
  {% block extra_head_base %}
 
  {% block extra_head %}{% endblock %}
 
  {% endblock %}
 

	
 
  <script type="text/javascript">
 
    var CONF_TZ = "{{ settings.TIME_ZONE }}";
 
  </script>
 
</head>
 
<body class="{% block body_class %}{% endblock %}">
 
  {% block template_overrides %}{% endblock %}
 
  <header class="clearfix d-print-none">
 
    {% block alert %}{% endblock %}
 
    {% block navbar %}{% include 'nav.html' %}{% endblock %}
 
  </header>
 

	
 
  {% if messages %}
 
  <div class="container my-5 alert alert-primary d-print-none">
 
    <ul class="messagelist list-unstyled">
 
      {% for message in messages %}
 
      <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
 
      {% endfor %}
 
    </ul>
 
  </div>
 
  {% endif %}
 

	
 
  <main role="main" class="{% block main_class %}container{% endblock %}">
 
    <div class="row">
 
      <div class="col page-header">
 
        <h1 class="page-title">{% block page_title %}{% endblock %}</h1>
 
        <p class="lead">{% block page_lead %}{% endblock %}</p>
 
      </div>
 
    </div>
 

	
 
    {% block body_base %}
 
    {% block body_out %}
 
    <div class="row">
 
      <div class="col-md-12">
 
        {% block body_outer %}
 
        {% endblock %}
 
      </div>
 
    </div>
 
    {% block content %}
 
    {% endblock %}
 
    {% endblock %}
 
    {% endblock %}
 

	
 
    {% block footer_base %}
 
    {% block footer %}
 
    {% endblock %}
 
    {% endblock %}
 

	
 
    {% block scripts %}
 
    <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
 
    <script src="{% static 'js/app.js' %}" type="text/javascript"></script>
 
    <script src="{% static 'js/jquery.formset.js' %}"></script>
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
 
    <script src="{% static 'bootstrap/js/bootstrap.bundle.min.js' %}"></script>
 
    {% if settings.ANALYTICS_KEY %}
 
    <!-- Global site tag (gtag.js) - Google Analytics -->
 
    <script async src="https://www.googletagmanager.com/gtag/js?id={{ settings.ANALYTICS_KEY }}"></script>
 
    <script>
 
      window.dataLayer = window.dataLayer || [];
 
      function gtag(){dataLayer.push(arguments);}
 
      gtag('js', new Date());
 
      gtag('config', '{{ settings.ANALYTICS_KEY }}');
 
    </script>
 
    {% else %}
 
    <!--no-analytics-->
 
    {% endif %}
 
    {% block extra_script %}
 
    {% endblock %}
 
    {% block scripts_extra %}{% endblock %}
 
    {% endblock %}
 

	
 
    {% block extra_body_base %}
 
    {% block extra_body %}
 
    {% endblock %}
 
    {% endblock %}
 
  </main>
 

	
 
  <footer class="footer mt-4 d-print-none">
 
    <div class="container py-4">
 
      <div class="row">
 
        <div class="col-md-4 pb-4">
 
          <strong>linux.conf.au 2022</strong> <br>
 
          Jan 14-16 2022 <br>
 
          Online, Worldwide <br>
 
          <a href="mailto:{{ settings.CONFERENCE_EMAIL }}" alt="Email"><i class="far fa-envelope"></i></a>&nbsp;&nbsp;
 
          <a href="https://twitter.com/linuxconfau" alt="Twitter"><i class="fab fa-twitter"></i></a>&nbsp;&nbsp;
 
          <a href="https://www.facebook.com/linuxconferenceaustralia/" alt="Facebook"><i class="fab fa-facebook"></i></a>
 
          <strong>Everything Open 2023</strong> <br>
 
          March 14-16 2023 <br>
 
          Naarm (Melbourne), Australia <br>
 
          Timezone: AEDT - UTC+11 <br>
 
          <a href="mailto:contact@everythingopen.au" alt="Email"><i class="bi-envelope-fill"></i></a>&nbsp;&nbsp;<a
 
            href="https://twitter.com/_everythingopen" alt="Twitter"><i class="bi-twitter"></i></a>&nbsp;&nbsp;<a
 
            href="https://www.linkedin.com/showcase/everythingopen/" alt="LinkedIn"><i class="bi-linkedin"></i></a>
 

	
 
          <a href="mailto:{{ settings.CONFERENCE_EMAIL }}" alt="Email"><i class="far fa-envelope"></i></a>&nbsp;&nbsp;<a
 
            href="https://twitter.com/_everythingopen" alt="Twitter"><i class="fab fa-twitter"></i></a>&nbsp;&nbsp;<a
 
            href="https://www.facebook.com/linuxconferenceaustralia/" alt="Facebook"><i class="fab fa-facebook"></i></a>&nbsp;&nbsp;<a
 
            href="https://www.linkedin.com/showcase/everythingopen/" alt="LinkedIn"><i class="fab fa-linkedin"></i></a>
 
        </div>
 
        <div class="col-md-4 pb-4 text-center">
 
          <img src="{% static 'lca/lca_horiz_colour.svg' %}" alt="linux.conf.au logo" class="footer-logo">
 
          <a href="https://linux.org.au"><img src="{% static 'lca/la_logo.svg' %}" alt="Linux Australia logo" class="footer-image"></a>
 
          <a href="https://linux.org.au"><img src="{% static 'img/la_logo.svg' %}" alt="Linux Australia logo" class="footer-image"></a>
 
        </div>
 
        <div class="col-md-4 pb-4 text-right">
 
          <small>
 
            <a href="#">Back to top</a><br>
 
            &copy; 2021 linux.conf.au and <a href="http://linux.org.au/">Linux Australia</a><br>
 
            &copy; 2022 Everything Open and <a href="http://linux.org.au/">Linux Australia</a><br>
 
            Linux is a registered trademark of Linus Torvalds <br>
 
            <a href="/colophon/">Colophon</a>
 
          </small>
 
        </div>
 
      </div>
 
    </div>
 
  </footer>
 

	
 
</body>
 
</html>
pinaxcon/templates/symposion/dashboard/_categories.html
Show inline comments
 
{% load i18n %}
 
{% load proposal_tags %}
 
{% load review_tags %}
 
{% load teams_tags %}
 
{% load registrasion_tags %}
 
{% load lca2018_tags %}
 
{% load lca2019_tags %}
 
{% load static %}
 
{% load waffle_tags %}
 

	
 
{% if user.is_staff %}
 
<div class="mb-4">
 
  <div class="row">
 
    <div class="col-12">
 
      <h2>{% trans "Administration" %}</h2>
 
      <p>The following administrative tools are available to you:
 
        <ul class="list-unstyled">
 
          <li><a href="{% url "reports_list" %}">Reports</a></li>
 
        </ul>
 
      </p>
 
    </div>
 
  </div>
 
</div>
 
{% endif %}
 

	
 
<div class="mb-4">
 
  <div class="row">
 
    <div class="col-12">
 
      <h2>{% trans "Attend" %} {% conference_name %}</h2>
 
    </div>
 
  </div>
 

	
 
  {% if not user.attendee.completed_registration %}
 
  <div class="row">
 
    <div class="col-12">
 
      <h3>Register</h3>
 
      <p>To attend the conference, you must create an attendee profile and purchase your ticket</p>
 
      <div>
 
        <a class="btn btn-lg btn-primary" role="button" href="{% url "guided_registration" %}">Get your ticket</a>
 
      </div>
 
    </div>
 
  </div>
 
  {% else %}
 

	
 
  {% flag "venueless_dashboard" %}
 
  {% venueless_login_url as venueless_url %}
 
  {% if venueless_url %}
 
  <div class="row">
 
    <div class="col-12 mb-3">
 
      <h3>Join the Conference</h3>
 
      <p>The conference is now open. Please join us to watch talks and interact with the other delegates.</p>
 
      <div>
 
        <a class="btn btn-lg btn-primary" role="button" href="{% venueless_login_url %}">Launch Conference</a>
 
      </div>
 
    </div>
 
  </div>
 
  {% endif %}
 
  {% endflag %}
 

	
 
  <div class="row">
 
    <div class="col-md-6 mb-3 mb-md-0">
 
      <h3>Attendee Profile</h3>
 
      <p>If you would like to change the details on your badge or your attendee statistics, you may edit your attendee profile here.</p>
 
      <div>
 
        <a class="btn btn-primary" role="button" href="{% url "attendee_edit" %}">Edit attendee profile</a>
 
        {% flag "badge_preview" %}
 
        <a class="btn btn-info" role="button" href="{% url "user_badge" %}">Preview my badge</a>
 
        {% endflag %}
 
      </div>
 
    </div>
 
    <div class="col-md-6 mb-3 mb-md-0">
 
      <h3>Account Management</h3>
 
      <p>If you would like to change your registered email address or password, you can use our self-service account management portal</p>
 
      <div>
 
        <a class="btn btn-primary" role="button" href="https://login.linux.conf.au/manage/">Account Management</a>
 
        <a class="btn btn-primary" role="button" href="https://login.everythingopen.au/manage/">Account Management</a>
 
      </div>
 
    </div>
 
  </div>
 

	
 
  {% items_pending as pending %}
 
  <div class="row">
 
    <div class="col-12">
 
      <h3 class="my-3">Account</h3>
 
    </div>
 
  </div>
 

	
 
  <div class="row">
 
    {% if pending %}
 
    <div class="col-md-6 mb-3">
 
      <h4>Items pending payment</h4>
 
      {% include "registrasion/_items_list.html" with items=pending %}
 
      <a class="btn btn-primary" role="button" href="{% url "checkout" %}"><i class="fa fa-credit-card"></i> Check out and pay</a>
 
      <a class="btn btn-secondary" role="button" href="{% url "voucher_code" %}">Apply voucher</a>
 
    </div>
 
    {% endif %}
 

	
 
    {% items_purchased as purchased %}
 
    {% if purchased %}
 
    <div class="col-md-6 mb-3">
 
      <h4>Paid Items</h4>
 
      {% include "registrasion/_items_list.html" with items=purchased %}
 

	
 
      {% if not pending %}
 
      <a class="btn btn-secondary" role="button" href="{% url "voucher_code" %}">Apply voucher</a>
 
      {% endif %}
 
    </div>
 
    {% endif %}
 

	
 
    <div class="col-md-6 mb-3">
 
      <h4>Add/Update Items</h4>
 
      {% missing_categories as missing %}
 
      {% if missing %}
 
      <div class="alert alert-warning my-4 pb-4">
 
        <h5 class="alert-heading">You have empty categories</h5>
 
        <p>You have <em>not</em> selected anything from the following
 
          categories. If your ticket includes any of these, you still need to
 
          make a selection:
 
        </p>
 

	
 
        {% include "registrasion/_category_list.html" with categories=missing %}
 
      </div>
 
      {% endif %}
 

	
 
      {% available_categories as available %}
 
      {% if available|contains_items_not_in:missing %}
 
      <p><strong>You can change your selection from these categories:</strong></p>
 
      {% include "registrasion/_category_list.html" with categories=available exclude=missing %}
 
      {% endif %}
 
    </div>
 

	
 
    {% invoices as invoices %}
 
    {% if invoices %}
 
    <div class="col-md-6 mb-3">
 
      <h4>Invoices</h4>
 
      <ul>
 
        {% for invoice in invoices %}
 
        <li{% if invoice.is_void %} class="void-invoice" style="display: none;"{% endif %}>
 
          <a href="{% url "invoice" invoice.id %}" >Invoice {{ invoice.id }}</a> - ${{ invoice.value }} ({{ invoice.get_status_display }})
 
        </li>
 
        {% endfor %}
 
      </ul>
 
      {% if invoices|any_is_void %}
 
      <div class="mt-auto">
 
        <button type="button" class="btn btn-sm btn-outline-dark" id="toggle-void-invoices" onclick="toggleVoidInvoices();">Show void invoices</button>
 
      </div>
 
      {% endif %}
 
    </div>
 
    {% endif %}
 

	
 
    {% flag "raffle_dashboard" %}
 
    <div class="col-md-6 mb-3">
 
      <h4>Raffle Tickets</h4>
 

	
 
      <p><a href="{% url "raffle-tickets" %}">View raffle tickets</a></p>
 
    </div>
 
    {% endflag %}
 

	
 
    {% available_credit as credit %}
 
    {% if credit %}
 
    <div class="col-md-6 mb-3">
 
      <h4>Credit</h4>
 
      <p>You have ${{ credit }} leftover from refunded invoices. This credit will be automatically applied to new invoices. Contact the conference organisers if you wish to arrange a refund to your original payment source.</p>
 
    </div>
 
    {% endif %}
 
  </div>
 
  {% endif %} {# user.attendee.completed_registration #}
 
</div>
pinaxcon/templates/symposion/proposals/_proposal_fields.html
Show inline comments
 
{% load i18n %}
 
{% load lca2018_tags %}
 

	
 
<div class="row">
 
  <div class="col-12">
 
    <h2 class="my-4">{% trans 'Details' %}</h2>
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Status</label>
 
  <div class="col-md-10">
 
    <p>
 
      {{ proposal.status }}
 
      {% if proposal.cancelled %}
 
      <span class="badge-danger">WITHDRAWN</p>
 
      {% endif %}
 
    </p>
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Proposal Type</label>
 
  <div class="col-md-10">
 
    <p>{{ proposal.kind.name|capfirst }}</p>
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Primary Topic</label>
 
  <div class="col-md-10">
 
    <p>{{ proposal.get_primary_topic_display }}&nbsp;</p>
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Target Audience</label>
 
  <div class="col-md-10">
 
    <p>{{ proposal.get_target_audience_display }}&nbsp;</p>
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Experience Level</label>
 
  <div class="col-md-10">
 
    <p>{{ proposal.get_experience_level_display }}</p>
 
  </div>
 
</div>
 

	
 
{% if proposal.talk_format %}
 
<div class="row">
 
  <label class="list-label col-md-2">Talk Format</label>
 
  <div class="col-md-10">
 
    <p>{{ proposal.get_talk_format_display }}</p>
 
  </div>
 
</div>
 
{% endif %}
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Submitted by</label>
 
  <div class="col-md-10">
 
    <p>{{ proposal.speaker }} &lt;{{ proposal.speaker.email }}&gt;</p>
 
  </div>
 
</div>
 

	
 
{% if proposal.additional_speakers.all %}
 
<div class="row">
 
  <label class="list-label col-md-2">Additional Speakers</label>
 
  <div class="col-md-10">
 
    <table class="table">
 
      <thead>
 
        <tr>
 
          <th>Name</th>
 
          <th>Email</th>
 
          <th>Status</th>
 
        </tr>
 
      </thead>
 
      <tbody>
 
        {% for speaker in proposal.additional_speakers.all %}
 
        <tr>
 
          {% if speaker.user %}
 
          <td>{{ speaker.name }}</td>
 
          <td>{{ speaker.email }}</td>
 
          <td>Joined</td>
 
          {% else %}
 
          <td>Unknown</td>
 
          <td>{{ speaker.email }}</td>
 
          <td>Invitation Sent</td>
 
          {% endif %}
 
        </tr>
 
        {% endfor %}
 
      </tbody>
 
    </table>
 
  </div>
 
</div>
 
{% endif %}
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Abstract</label>
 
  <div class="col-md-10">
 
    <div class="abstract monospace-text">{{ proposal.abstract_html|safe }}&nbsp;</div>
 
    <p></p>
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Private Abstract</label>
 
  <div class="col-md-10">
 
    <div class="private_abstract monospace-text">{{ proposal.private_abstract_html|safe }}&nbsp;</div>
 
    <p></p>
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Content Warning</label>
 
  <div class="col-md-10">
 
    {% if proposal.content_warning_html %}
 
    <div class="content_warning monospace-text">{{ proposal.content_warning_html|safe }}</div>
 
    {% else %}
 
    <div class="content_warning monospace-text"><b>No Content Warning Provided</b></div>
 
    {% endif %}
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Project</label>
 
  <div class="col-md-10">
 
    {% if proposal.project %}
 
    <p>{{ proposal.project|safe }}&nbsp;</p>
 
    {% else %}
 
    <p><b>None Provided</b></p>
 
    {% endif %}
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Project URL</label>
 
  <div class="col-md-10">
 
    {% if proposal.project_url %}
 
    <p><a href="{{ proposal.project_url|safe }}">{{ proposal.project_url|safe }}</a>&nbsp;</p>
 
    {% else %}
 
    <p><b>None Provided</b></p>
 
    {% endif %}
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Video URL</label>
 
  <div class="col-md-10">
 
    {% if proposal.video_url %}
 
    <p><a href="{{ proposal.video_url|safe }}">{{ proposal.video_url|safe }}</a>&nbsp;</p>
 
    {% else %}
 
    <p><b>None Provided</b></p>
 
    {% endif %}
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Special Requirements</label>
 
  <div class="col-md-10">
 
    {% if proposal.technical_requirements_html %}
 
    <div class="special_requirements monospace-text">{{ proposal.technical_requirements_html|safe }}</div>
 
    {% else %}
 
    <div class="special_requirements monospace-text"><b>No Special Talk Requirements Requested</b></div>
 
    {% endif %}
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Requires approval from employer?</label>
 
  <div class="col-md-10">
 
    <p>{{ proposal.require_approval }}&nbsp;</p>
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Recording Release</label>
 
  <div class="col-md-10">
 
    <p>{{ proposal.recording_release }}&nbsp;</p>
 
  </div>
 
</div>
 

	
 
<div class="row">
 
  <label class="list-label col-md-2">Materials Release</label>
 
  <div class="col-md-10">
 
    <p>{{ proposal.materials_release }}&nbsp;</p>
 
  </div>
 
</div>
 

	
 
<div class="row my-4">
 
  <h2 class="col-12">
 
    Speakers
 
  </h2>
 
</div>
 

	
 
{% for speaker in proposal.speakers %}
 
{% if speaker.name %}
 
<div class="card my-3">
 
  <h4 class="card-header">{{ speaker.name }}</h4>
 
  <div class="card-body">
 
    <div class="row">
 
      <label class="list-label col-md-2">Local Timezone</label>
 
      <div class="col-md-10">
 
        {% if speaker.local_timezone %}
 
        {{ speaker.local_timezone|safe }}
 
        {% else %}
 
        <em>None Provided</em>
 
        {% endif %}
 
      </div>
 
    </div>
 
    <div class="row">
 
      <label class="list-label col-md-2">Biography</label>
 
      <div class="col-md-10 monospace-text">{{ speaker.biography_html|safe }}&nbsp;</div>
 
    </div>
 
    <div class="row">
 
      <label class="list-label col-md-2">Experience</label>
 
      <div class="col-md-10 monospace-text">{{ speaker.experience_html|safe }}&nbsp;</div>
 
    </div>
 
    {% if speaker.accessibility_html %}
 
    <div class="row">
 
      <label class="list-label col-md-2">Accessibility Requirements</label>
 
      <div class="col-md-10 monospace-text">{{ speaker.accessibility_html|safe }}&nbsp;</div>
 
    </div>
 
    {% endif %}
 
  </div>
 
</div>
 
{% endif %}
 
{% endfor %}
 

	
 
{% can_manage proposal as can_manage_proposal %}
 
{% if can_manage_proposal or request.user.speaker_profile in proposal.speakers %}
 

	
 
<div class="row my-4">
 
  <h2 class="col-12">
 
    Travel Assistance
 
  </h2>
 
</div>
 

	
 
<div class="row">
 
  <div class="col-12">
 
    <table class="table">
 
      <thead>
 
        <tr>
 
          <th>Name</th>
 
          <th>Travel</th>
 
          <th>Accommodation</th>
 
          <th>Details</th>
 
        </tr>
 
      </thead>
 
      <tbody>
 
        {% for speaker in proposal.speakers %}
 
        <tr>
 
          {% if speaker.user %}
 
          <td>{{ speaker.name }}</td>
 
          <td>{{ speaker.travel_assistance }}</td>
 
          <td>{{ speaker.accommodation_assistance }}</td>
 
          <td><div class="monospace-text">{{ speaker.assistance_html|safe }}</div></td>
 
          {% else %}
 
          <td><b>Unconfirmed co-presenter</b></td>
 
          <td><b>Unknown</b></td>
 
          <td><b>Unknown</b></td>
 
          <td><b>Unknown</b></td>
 
          {% endif %}
 
        </tr>
 
        {% endfor %}
 
      </tbody>
 
    </table>
 
  </div>
 
</div>
 
<br />
 
{% endif %}
pinaxcon/templates/symposion/schedule/schedule_conference.html
Show inline comments
 
{% extends "symposion/schedule/base.html" %}
 

	
 
{% load i18n %}
 
{% load cache %}
 
{% load lca2018_tags %}
 

	
 
{% block head_title %}Conference Schedule{% endblock %}
 
{% block page_title %}Conference Schedule{% endblock %}
 

	
 
{% block content %}
 
  <div class="float-right d-print-none">
 
    <div class="dropdown">
 
      <button class="btn btn-secondary dropdown-toggle" type="button" id="downloadMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
 
        Download
 
      </button>
 
      <div class="dropdown-menu dropdown-menu-right" aria-labelledby="downloadMenuButton">
 
        <h6 class="dropdown-header">Format</h6>
 
        <a class="dropdown-item" href="{% url "ical_feed" %}">iCal (ICS)</a>
 
        <a class="dropdown-item" href="{% url "schedule_json" %}">JSON</a>
 
      </div>
 
    </div>
 
  </div>
 

	
 
  <div class="row d-print-none">
 
    <div class="col">
 
      <ul class="nav nav-pills flex-column flex-md-row" id="schedule-tabs" role="tablist">
 
        {% for section in sections %}
 
        {% for timetable in section.days %}
 
          <li class="nav-item flex-md-fill text-md-center">
 
            {% include "symposion/schedule/_schedule_nav_link.html" with active=forloop.first label=timetable.day.date|date:"l" date=timetable.day.date|date:"Y-m-d" %}
 
          </li>
 
        {% endfor %}
 
      {% endfor %}
 
      </ul>
 
    </div>
 
  </div>
 

	
 
  <div class="tab-content d-print-block my-3" id="schedule-tabContent">
 
    {% for section in sections %}
 
      {% cache 600 "schedule-table" section.schedule.section %}
 
      {% for timetable in section.days %}
 
      <div class="row tab-pane fade {% if forloop.first %}show active{% endif %} d-print-block" id="{{ timetable.day.date|date:"l"|lower}}" role="tabpanel" aria-labelledby="schedule_day_{{ timetable.day.date|date:"l"|lower}}-tab">
 
        <div class="col-12">
 
          <h2 class="my-4">
 
            {{ section.schedule.section.name }}
 
            <span class="clearfix d-sm-block d-md-none"></span>
 
            <small class="text-muted">{{ timetable.day.date|date:"l" }}, {{ timetable.day.date }}</small>
 
          </h2>
 
          <p class="timezone-info small">Conference times are in {{ settings.LCA_START|date:'T' }} (UTC{{ settings.LCA_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
 
          <p class="timezone-info small">Conference times are in {{ settings.CONF_START|date:'T' }} (UTC{{ settings.CONF_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
 
          <div class="table-responsive d-none d-md-block">
 
            {% include "symposion/schedule/_grid.html" %}
 
          </div>
 
          <div class="mobile-schedule d-sm-block d-md-none">
 
            {% include "symposion/schedule/_mobile.html" %}
 
          </div>
 
        </div>
 
      </div>
 
      {% endfor %}
 
      {% endcache %}
 
    {% endfor %}
 
  </div>
 
{% endblock %}
 

	
 
{% block scripts_extra %}
 
  <script type="text/javascript">
 
    window.addEventListener("hashchange", function(event) {
 
      var fragment = window.location.hash.toLowerCase().substring(1);
 

	
 
      if (!fragment) {
 
        return;
 
      };
 

	
 
      var tab_id = "#schedule_day_" + fragment + "-tab";
 
      $(tab_id).tab('show');
 
    }, false);
 

	
 
    $(".nav-item").click(function(event) {
 
      // This updates the window location fragment so that
 
      // the URL bar is updated, and so that when you go
 
      // back, it loads the right page.
 

	
 
      // len("schedule_day_") == 13
 
      var day_tab = event.target.id.substring(13);
 
      var day = day_tab.substr(0, day_tab.length-4);
 

	
 
      if (history.pushState) {
 
        history.pushState(null, null, "#" + day);
 
      }
 
    });
 
  </script>
 
  {{ block.super }}
 
{% endblock %}
pinaxcon/templates/symposion/schedule/schedule_detail.html
Show inline comments
 
{% extends "symposion/schedule/base.html" %}
 

	
 
{% load i18n %}
 
{% load cache %}
 
{% load lca2018_tags %}
 
{% load sitetree %}
 

	
 
{% block head_title %}{{ schedule.section.name }} Schedule{% endblock %}
 
{% block page_title %}{{ schedule.section.name }} Schedule{% endblock%}
 

	
 
{% block content %}
 
  {% cache 600 "schedule-detail-table" schedule.section %}
 
    {% for timetable in days %}
 
    <div class="row timetable-day">
 
      <div class="col-12">
 
        <h2 class="my-4">
 
          {{ timetable.day.date|date:"l" }}, {{ timetable.day.date }}
 
        </h2>
 
        <p class="timezone-info small">Conference times are in {{ settings.LCA_START|date:'T' }} (UTC{{ settings.LCA_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
 
        <p class="timezone-info small">Conference times are in {{ settings.CONF_START|date:'T' }} (UTC{{ settings.CONF_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
 
        <div class="table-responsive d-none d-md-block">
 
          {% include "symposion/schedule/_grid.html" %}
 
        </div>
 
        <div class="mobile-schedule d-sm-block d-md-none">
 
          {% include "symposion/schedule/_mobile.html" %}
 
        </div>
 
      </div>
 
    </div>
 
    {% endfor %}
 
  {% endcache %}
 
{% endblock %}
pinaxcon/templates/symposion/schedule/schedule_edit.html
Show inline comments
 
{% extends "symposion/schedule/base.html" %}
 

	
 
{% load i18n %}
 

	
 
{% block head_title %}Conference Schedule Edit{% endblock %}
 
{% block page_title %}Conference Schedule Edit{% endblock %}
 

	
 
{% block content %}
 
  <div class="row">
 
    <div class="col-12">
 
      <h2>Schedule Admin</h2>
 
      <form class="form-horizontal" id="schedule-builder" action="." method="post" enctype="multipart/form-data">
 
        {% csrf_token %}
 
        {{ form.as_p }}
 
        <input type="submit" name="submit" value="Submit" />
 
        <input type="submit" id="delete" name="delete" value="Delete Schedule" />
 
      </form>
 
    </div>
 
  </div>
 

	
 
  {% for timetable in days %}
 
  <div class="row">
 
    <div class="col-12">
 
      <h2 class="my-4">
 
        {{ timetable.day.date|date:"l" }}, {{ timetable.day.date }}
 
      </h2>
 
      <p class="timezone-info small">Conference times are in {{ settings.LCA_START|date:'T' }} (UTC{{ settings.LCA_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
 
      <p class="timezone-info small">Conference times are in {{ settings.CONF_START|date:'T' }} (UTC{{ settings.CONF_START|date:'O' }}). <span class="d-print-none">Current talks will be highlighted.</span></p>
 
      <div class="table-responsive d-none d-md-block">
 
        {% include "symposion/schedule/_grid.html" with edit_schedule=True %}
 
      </div>
 
      <div class="mobile-schedule d-sm-block d-md-none">
 
        {% include "symposion/schedule/_mobile.html" with edit_schedule=True %}
 
      </div>
 
    </div>
 
  </div>
 
  {% endfor %}
 

	
 
  <div class="modal fade" id="slotEditModal"></div>
 
{% endblock %}
 

	
static/src/img/eo2023.svg
Show inline comments
 
new file 100644
 
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="180" height="35" viewBox="0 0 180 35"><path d="M14,15.85v.83H5.34V4.08h8.43v.83H6.26v5H13v.81H6.26v5.16Z" fill="#fff"/><path d="M27.27,4.08l-5.62,12.6h-.91L15.12,4.08h1l5.09,11.41,5.1-11.41Z" fill="#fff"/><path d="M38,15.85v.83H29.3V4.08h8.43v.83H30.22v5h6.72v.81H30.22v5.16Z" fill="#fff"/><path d="M50.09,16.68l-3-4.21a9.37,9.37,0,0,1-1.23.09h-3.6v4.12h-.92V4.08h4.52a5.65,5.65,0,0,1,3.73,1.13,3.84,3.84,0,0,1,1.35,3.12A3.85,3.85,0,0,1,48,12.27l3.15,4.41Zm-4.23-4.93a4.69,4.69,0,0,0,3.08-.89A3.12,3.12,0,0,0,50,8.33,3.11,3.11,0,0,0,48.94,5.8a4.69,4.69,0,0,0-3.08-.89h-3.6v6.84Z" fill="#fff"/><path d="M58,12.34v4.34h-.92V12.34L52,4.08h1l4.55,7.42,4.56-7.42h1Z" fill="#fff"/><path d="M67.73,4.91H63.2V4.08h10v.83H68.65V16.68h-.92Z" fill="#fff"/><path d="M85.71,4.08v12.6H84.8v-6H76.37v6h-.92V4.08h.92v5.8H84.8V4.08Z" fill="#fff"/><path d="M90.11,4.08H91v12.6h-.91Z" fill="#fff"/><path d="M105.68,4.08v12.6h-.76L96.33,5.74V16.68h-.91V4.08h.77l8.57,11V4.08Z" fill="#fff"/><path d="M119.07,10.44H120v4.71a5.49,5.49,0,0,1-2,1.21,7.56,7.56,0,0,1-2.49.41,6.76,6.76,0,0,1-3.37-.83,6,6,0,0,1-2.36-2.28,6.37,6.37,0,0,1-.86-3.28,6.34,6.34,0,0,1,.86-3.27,6,6,0,0,1,2.36-2.29A6.92,6.92,0,0,1,115.47,4a7.26,7.26,0,0,1,2.55.44,5.57,5.57,0,0,1,2,1.29l-.57.61a4.72,4.72,0,0,0-1.77-1.14,6.29,6.29,0,0,0-2.17-.35,6,6,0,0,0-2.93.72,5.21,5.21,0,0,0-2,2,5.53,5.53,0,0,0-.74,2.83,5.46,5.46,0,0,0,2.79,4.82,5.91,5.91,0,0,0,2.92.73,5.5,5.5,0,0,0,3.58-1.16Z" fill="#fff"/><path d="M147.91,5.3a3.84,3.84,0,0,1,1.35,3.12,3.81,3.81,0,0,1-1.35,3.1,5.65,5.65,0,0,1-3.73,1.13h-3.6v4.12h-.92V4.17h4.52A5.65,5.65,0,0,1,147.91,5.3Zm-.65,5.64a3.09,3.09,0,0,0,1.06-2.52,3.11,3.11,0,0,0-1.06-2.53A4.69,4.69,0,0,0,144.18,5h-3.6v6.82h3.6A4.69,4.69,0,0,0,147.26,10.94Z"/><path d="M161.05,15.94v.83h-8.7V4.17h8.43V5h-7.51v5H160v.81h-6.72v5.16Z"/><path d="M174.66,4.17v12.6h-.76L165.31,5.83V16.77h-.91V4.17h.77l8.57,11V4.17Z"/><path d="M131.65,4a6.18,6.18,0,0,0-3.33,0,6.35,6.35,0,0,0-1.83.85l.63.63a5.41,5.41,0,0,1,4.26-.63,5.67,5.67,0,0,1,2.56,1.51A5.56,5.56,0,0,1,135.44,9a5.28,5.28,0,0,1,0,2.87,5.65,5.65,0,0,1-1.53,2.57A5.87,5.87,0,0,1,131.31,16a5.32,5.32,0,0,1-2.88,0,5.56,5.56,0,0,1-2.56-1.5,5.56,5.56,0,0,1-1.5-2.56,5.32,5.32,0,0,1,0-2.88,5.61,5.61,0,0,1,.61-1.4l-.63-.62a6.32,6.32,0,0,0-.84,1.83,6.21,6.21,0,0,0,0,3.34,6.7,6.7,0,0,0,4.67,4.67,6.18,6.18,0,0,0,3.33,0,6.69,6.69,0,0,0,3-1.8,6.88,6.88,0,0,0,1.81-3,6.18,6.18,0,0,0,0-3.33,6.83,6.83,0,0,0-4.7-4.7Z" fill="#231f20"/><path d="M43.19,31.11V23.92L39.66,30h-.3l-3.51-6v7.17h-.6v-8.4h.51l3.76,6.49,3.76-6.49h.5v8.4Z"/><path d="M52.52,30.55v.56h-5.8v-8.4h5.62v.55h-5v3.31h4.48v.54H47.33v3.44Z"/><path d="M54.75,22.71h.61v7.84H60.2v.56H54.75Z"/><path d="M68.13,27.48a2,2,0,0,1,.48,1.41,1.91,1.91,0,0,1-.78,1.64,3.93,3.93,0,0,1-2.32.58H61.77v-8.4h3.5a3.57,3.57,0,0,1,2.13.55,1.87,1.87,0,0,1,.76,1.59,1.91,1.91,0,0,1-.38,1.22,2.08,2.08,0,0,1-1,.7A2.34,2.34,0,0,1,68.13,27.48Zm-5.75-4.25v3.35h2.87a3,3,0,0,0,1.7-.42,1.48,1.48,0,0,0,.59-1.26A1.44,1.44,0,0,0,67,23.66a2.94,2.94,0,0,0-1.7-.43Zm5,6.92a1.68,1.68,0,0,0,0-2.62,3.31,3.31,0,0,0-1.85-.42H62.38v3.47h3.13A3.22,3.22,0,0,0,67.36,30.15Z"/><path d="M72.12,30.61a4.09,4.09,0,0,1-1.56-1.53,4.26,4.26,0,0,1,1.56-5.88,4.82,4.82,0,0,1,4.47,0,4.07,4.07,0,0,1,1.56,1.52,4.47,4.47,0,0,1,0,4.37,4,4,0,0,1-1.56,1.52,4.74,4.74,0,0,1-4.47,0Zm4.14-.49a3.56,3.56,0,0,0,1.35-1.32,3.8,3.8,0,0,0,.49-1.89A3.75,3.75,0,0,0,77.61,25a3.52,3.52,0,0,0-1.35-1.33,4,4,0,0,0-3.82,0A3.52,3.52,0,0,0,71.09,25a3.65,3.65,0,0,0-.49,1.89,3.7,3.7,0,0,0,.49,1.89,3.56,3.56,0,0,0,1.35,1.32,4,4,0,0,0,3.82,0Z"/><path d="M81.66,30.24a3.74,3.74,0,0,1-.88-2.7V22.71h.61v4.81a3.31,3.31,0,0,0,.7,2.31,2.65,2.65,0,0,0,2.06.77,2.62,2.62,0,0,0,2-.77,3.31,3.31,0,0,0,.71-2.31V22.71h.61v4.83a3.74,3.74,0,0,1-.89,2.7,3.77,3.77,0,0,1-5,0Z"/><path d="M96.2,31.11l-2-2.81a6.07,6.07,0,0,1-.81.06H91v2.75h-.62v-8.4h3a3.77,3.77,0,0,1,2.48.75,2.56,2.56,0,0,1,.9,2.08,2.7,2.7,0,0,1-.51,1.67,2.77,2.77,0,0,1-1.46,1l2.1,2.94Zm-2.82-3.29a3.11,3.11,0,0,0,2.05-.6,2.06,2.06,0,0,0,.71-1.68,2.1,2.1,0,0,0-.71-1.69,3.17,3.17,0,0,0-2.05-.59H91v4.56Z"/><path d="M105.84,22.71v8.4h-.5l-5.73-7.3v7.3H99v-8.4h.52L105.23,30V22.71Z"/><path d="M114.57,30.55v.56h-5.8v-8.4h5.62v.55h-5v3.31h4.48v.54h-4.48v3.44Z"/><path d="M123.61,30.55v.56h-5.77v-.44l3.55-3.52a5.09,5.09,0,0,0,.94-1.2,2.33,2.33,0,0,0,.25-1,1.53,1.53,0,0,0-.55-1.26,2.36,2.36,0,0,0-1.58-.46,3.66,3.66,0,0,0-1.38.24,2.66,2.66,0,0,0-1,.73l-.43-.38a3.16,3.16,0,0,1,1.22-.85,4.4,4.4,0,0,1,1.67-.3,3,3,0,0,1,2,.6,2,2,0,0,1,.73,1.62,2.65,2.65,0,0,1-.29,1.23,5.38,5.38,0,0,1-1.08,1.37l-3.09,3.08Z" fill="#fff"/><path d="M126.29,30.64a3.28,3.28,0,0,1-1.16-1.48,6.26,6.26,0,0,1,0-4.51,3.34,3.34,0,0,1,1.16-1.48,3.07,3.07,0,0,1,3.42,0,3.43,3.43,0,0,1,1.17,1.48,6.41,6.41,0,0,1,0,4.51,3.37,3.37,0,0,1-1.17,1.48,3,3,0,0,1-3.42,0Zm3.11-.48a2.78,2.78,0,0,0,.94-1.27,5.16,5.16,0,0,0,.34-2,5.21,5.21,0,0,0-.34-2,2.78,2.78,0,0,0-.94-1.27,2.45,2.45,0,0,0-2.8,0,2.85,2.85,0,0,0-.94,1.27,5.42,5.42,0,0,0-.33,2,5.37,5.37,0,0,0,.33,2,2.85,2.85,0,0,0,.94,1.27,2.45,2.45,0,0,0,2.8,0Z" fill="#fff"/><path d="M138.2,30.55v.56h-5.77v-.44L136,27.15a4.83,4.83,0,0,0,.94-1.2,2.2,2.2,0,0,0,.25-1,1.53,1.53,0,0,0-.55-1.26,2.35,2.35,0,0,0-1.57-.46,3.71,3.71,0,0,0-1.39.24,2.66,2.66,0,0,0-1,.73l-.43-.38a3.16,3.16,0,0,1,1.22-.85,4.4,4.4,0,0,1,1.67-.3,3,3,0,0,1,2,.6,2,2,0,0,1,.73,1.62,2.77,2.77,0,0,1-.28,1.23,5.87,5.87,0,0,1-1.08,1.37l-3.1,3.08Z" fill="#fff"/><path d="M144,27a2.18,2.18,0,0,1,.72,1.7,2.42,2.42,0,0,1-.33,1.26,2.25,2.25,0,0,1-1,.85,3.68,3.68,0,0,1-1.6.32,4.81,4.81,0,0,1-1.71-.31,3,3,0,0,1-1.25-.82l.31-.47a3,3,0,0,0,1.11.74,3.88,3.88,0,0,0,1.54.29,2.58,2.58,0,0,0,1.72-.5,1.84,1.84,0,0,0,0-2.73,3,3,0,0,0-1.84-.49h-.53v-.44l2.49-3.18h-4.48v-.55h5.27v.43l-2.52,3.23A3.27,3.27,0,0,1,144,27Z" fill="#fff"/></svg>
static/src/img/la_logo.svg
Show inline comments
 
file renamed from static/src/lca/la_logo.svg to static/src/img/la_logo.svg
static/src/lca/lca2022.svg
Show inline comments
 
deleted file
static/src/lca/lca_horiz_blue.svg
Show inline comments
 
deleted file
static/src/lca/lca_horiz_colour.svg
Show inline comments
 
deleted file

Changeset was too big and was cut off... Show full diff anyway

0 comments (0 inline, 0 general)