# Copyright (C) Lightbend Inc. <https://www.lightbend.com>

# Reference configuration for Play

#default timeout for promises
# @richdougherty: Is this used any more?
promise.akka.actor.typed.timeout=5s

play {
  # Defines whether the global application is allowed
  # Set this to true if you need to use play.api.Play.current, Play.application, or any deprecated global helpers.
  allowGlobalApplication = false

  # Defines whether the Http.Context thread local is allowed
  # You can set this to false if you don't use APIs anymore that rely on the Http.Context.
  allowHttpContext = true

  logger {
    # This is a boolean configuration.
    # If true, the configuration properties will be used when configuring the logger.
    includeConfigProperties = false
  }

  http {

    # The application context.
    # Must start with /.
    context = "/"

    # The error handler.
    # Used by Play's built in DI support to locate and bind a request handler.  Must be the FQCN of a Play router.
    # If null, will attempt to load a class called Routes in the root package, otherwise if that's not found, an empty
    # router will be bound.
    router = null

    # The request handler.
    # Used by Play's built in DI support to locate and bind a request handler.  Must be one of the following:
    # - A FQCN that implements play.api.http.HttpRequestHandler (Scala).
    # - A FQCN that implements play.http.HttpRequestHandler (Java).
    # - provided, indicates that the application has bound an instance of play.api.http.HttpRequestHandler through some
    #   other mechanism.
    # If null, will attempt to load a class called RequestHandler in the root package, otherwise if that's
    # not found, will default to play.api.http.JavaCompatibleHttpRequestHandler.
    requestHandler = null

    # The request handler.
    # Used by Play's built in DI support to locate and bind a request handler.  Must be one of the following:
    # - A FQCN that implements play.http.ActionCreator (Java).
    # If null, will attempt to load a class called ActionCreator in the root package, otherwise if that's
    # not found, will default to play.http.DefaultActionCreator.
    actionCreator = null

    # The error handler.
    # Used by Play's built in DI support to locate and bind an error handler.  Must be one of the following:
    # - A FQCN that implements play.api.http.HttpErrorHandler (Scala).
    # - A FQCN that implements play.http.HttpErrorHandler (Java).
    # - provided, indicates that the application has bound an instance of play.api.http.HttpErrorHandler through some
    #   other mechanism.
    # If null, will attempt to load a class called ErrorHandler in the root package, otherwise if that's
    # not found, will default to play.api.http.DefaultHttpErrorHandler.
    errorHandler = null

    # The filters.
    # Used by Play's built in DI support to locate and bind a class to provide filters.  Must be one of the following:
    # - A FQCN that implements play.api.http.HttpFilters (Scala).
    # - A FQCN that implements play.http.HttpFilters (Java).
    # - provided, indicates that the application has bound an instance of play.api.http.HttpFilters through some
    #   other mechanism.
    # If null, will attempt to load a class called Filters in the root package, otherwise if that's not found, will
    # default to play.api.http.EnabledFilters, which provides the default filters.
    # To disable filters completely, set this to "play.api.http.NoHttpFilters"
    filters = null

    # Forwarded header configuration
    # Play supports various forwarded headers used by proxies to indicate the incoming IP address and protocol of
    # requests. Play uses this in the implementation of the RequestHeader.remoteAddress and RequestHeader.secure
    # fields.
    forwarded = {

      # The version of forwarded headers to use.
      # Valid values are x-forwarded and rfc7239.
      # x-forwarded uses the de facto standard X-Forwarded-For and X-Forwarded-Proto headers to determine the correct
      # remote address and protocol for the request. These headers are widely used, however, they have some serious
      # limitations, for example, if you have multiple proxies, and only one of them adds the X-Forwarded-Proto header,
      # it's impossible to reliably determine which proxy added it and therefore whether the request from the client
      # was made using https or http. rfc7239 uses the new Forwarded header standard, and solves many of the
      # limitations of the X-Forwarded-* headers.
      version = "x-forwarded"

      # The trusted proxies.
      # Trusted proxies may either be individual IPv4 or IPv6 addresses, or be IPv4 or IPv6 CIDR address ranges.
      # This is used to prevent IP address spoofing. Multiple proxies can add and append to the forwarded headers,
      # including the client, which could masquerade as a proxy proxying requests on behalf of another client.  Play
      # will validate that the incoming request IP, and all forwarded headers match the addresses in this list, and will
      # present the first untrusted IP address that it finds (or if all addresses are trusted, the last address) to the
      # application.
      # Note that a number of cloud hosting platforms, most notably AWS, make no guarantees as to what IP addresses
      # their proxies will make requests from. If this is the case, in order for Play to respect the forwarded headers,
      # you need to trust all IP addresses, therefore making it possible for clients to spoof the incoming address.
      # To trust all IP addresses, set this to ["0.0.0.0/0", "::/0"].
      trustedProxies = ["127.0.0.1", "::1"]
    }

    # Parsing configuration
    parser = {

      # The maximum amount of a request body that should be buffered into memory
      maxMemoryBuffer = 100k

      # The maximum amount of a request body that should be buffered into disk
      maxDiskBuffer = 10m
    }

    # Action composition configuration
    actionComposition = {

      # If annotations put directly on Controller classes should be executed before the ones put on action methods
      controllerAnnotationsFirst = false

      # If the action returned by the action creator should be executed before the action composition ones
      executeActionCreatorActionFirst = false
    }

    # Cookies configuration
    cookies = {

      # Whether strict cookie parsing should be used. If true, will ignore the entire cookie header if a single invalid
      # cookie is found, otherwise, will just ignore the invalid cookie if an invalid cookie is found. The reason
      # dropping the entire header may be useful is that browsers don't make any attempt to validate cookie values,
      # which may open opportunities for an attacker to trigger some edge case in the parser to steal cookie
      # information. By dropping the entire header, this makes it harder to exploit edge cases.
      strict = true
    }

    # #session-configuration
    # Session configuration
    session = {

      # The cookie name
      cookieName = "PLAY_SESSION"

      # Whether the secure attribute of the cookie should be set to true
      secure = false

      # The max age to set on the cookie.
      # If null, the cookie expires when the user closes their browser.
      # An important thing to note, this only sets when the browser will discard the cookie.
      maxAge = null

      # Whether the HTTP only attribute of the cookie should be set to true
      httpOnly = true

      # The value of the SameSite attribute of the cookie. Set to null for no SameSite attribute.
      # Possible values are "lax" and "strict". If misconfigured it's set to null.
      sameSite = "lax"

      # The domain to set on the session cookie
      # If null, does not set a domain on the session cookie.
      domain = null

      # The session path
      # Must start with /.
      path = ${play.http.context}

      jwt {
        # The JWT signature algorithm to use on the session cookie
        # uses 'alg' https://tools.ietf.org/html/rfc7515#section-4.1.1
        signatureAlgorithm = "HS256"

        # The time after which the session is automatically invalidated.
        # Use 'exp' https://tools.ietf.org/html/rfc7519#section-4.1.4
        expiresAfter = ${play.http.session.maxAge}

        # The amount of clock skew to accept between servers when performing date checks
        # If you have NTP or roughtime synchronizing between servers, you can enhance
        # security by tightening this value.
        clockSkew = 5 minutes

        # The claim key under which all user data is stored in the JWT.
        dataClaim = "data"
      }
    }
    # #session-configuration

    # Flash configuration
    flash = {
      # The cookie name
      cookieName = "PLAY_FLASH"

      # Whether the flash cookie should be secure or not
      secure = false

      # Whether the HTTP only attribute of the cookie should be set to true
      httpOnly = true

      # The value of the SameSite attribute of the cookie. Set to null for no SameSite attribute.
      # Possible values are "lax" and "strict". If misconfigured it's set to null.
      sameSite = "lax"

      # The flash path
      # Must start with /.
      path = ${play.http.context}

      # The domain to set on the flash cookie
      # If null, does not set a domain on the flash cookie.
      domain = ${play.http.session.domain}

      jwt {
        # The JWT signature algorithm to use on the session cookie
        # uses 'alg' https://tools.ietf.org/html/rfc7515#section-4.1.1
        signatureAlgorithm = "HS256"

        # The time after which the session is automatically invalidated.
        # Use 'exp' https://tools.ietf.org/html/rfc7519#section-4.1.4
        expiresAfter = null

        # The amount of clock skew to accept between servers when performing date checks
        # If you have NTP or roughtime synchronizing between servers, you can enhance
        # security by tightening this value.
        clockSkew = 5 minutes

        # The claim key under which all user data is stored in the JWT.
        dataClaim = "data"
      }
    }

    # Secret configuration
    secret {
      # The application secret. Must be set. A value of "changeme" will cause the application to fail to start in
      # production.
      key = "changeme"

      # The JCE provider to use. If null, uses the platform default.
      provider = null
    }

    fileMimeTypes = """
        3dm=x-world/x-3dmf
        3dmf=x-world/x-3dmf
        7z=application/x-7z-compressed
        a=application/octet-stream
        aab=application/x-authorware-bin
        aam=application/x-authorware-map
        aas=application/x-authorware-seg
        abc=text/vndabc
        ace=application/x-ace-compressed
        acgi=text/html
        afl=video/animaflex
        ai=application/postscript
        aif=audio/aiff
        aifc=audio/aiff
        aiff=audio/aiff
        aim=application/x-aim
        aip=text/x-audiosoft-intra
        alz=application/x-alz-compressed
        ani=application/x-navi-animation
        aos=application/x-nokia-9000-communicator-add-on-software
        aps=application/mime
        arc=application/x-arc-compressed
        arj=application/arj
        art=image/x-jg
        asf=video/x-ms-asf
        asm=text/x-asm
        asp=text/asp
        asx=application/x-mplayer2
        au=audio/basic
        avi=video/x-msvideo
        avs=video/avs-video
        bcpio=application/x-bcpio
        bin=application/mac-binary
        bmp=image/bmp
        boo=application/book
        book=application/book
        boz=application/x-bzip2
        bsh=application/x-bsh
        bz2=application/x-bzip2
        bz=application/x-bzip
        c++=text/plain
        c=text/x-c
        cab=application/vnd.ms-cab-compressed
        cat=application/vndms-pkiseccat
        cc=text/x-c
        ccad=application/clariscad
        cco=application/x-cocoa
        cdf=application/cdf
        cer=application/pkix-cert
        cha=application/x-chat
        chat=application/x-chat
        chrt=application/vnd.kde.kchart
        class=application/java
        # ? class=application/java-vm
        com=text/plain
        conf=text/plain
        cpio=application/x-cpio
        cpp=text/x-c
        cpt=application/mac-compactpro
        crl=application/pkcs-crl
        crt=application/pkix-cert
        crx=application/x-chrome-extension
        csh=text/x-scriptcsh
        csp=application/csp-report
        css=text/css
        csv=text/csv
        cxx=text/plain
        dar=application/x-dar
        dcr=application/x-director
        deb=application/x-debian-package
        deepv=application/x-deepv
        def=text/plain
        der=application/x-x509-ca-cert
        dfont=application/x-font-ttf
        dif=video/x-dv
        dir=application/x-director
        divx=video/divx
        dl=video/dl
        dmg=application/x-apple-diskimage
        doc=application/msword
        dot=application/msword
        dp=application/commonground
        drw=application/drafting
        dump=application/octet-stream
        dv=video/x-dv
        dvi=application/x-dvi
        dwf=drawing/x-dwf=(old)
        dwg=application/acad
        dxf=application/dxf
        dxr=application/x-director
        el=text/x-scriptelisp
        elc=application/x-bytecodeelisp=(compiled=elisp)
        eml=message/rfc822
        env=application/x-envoy
        eot=application/vnd.ms-fontobject
        eps=application/postscript
        es=application/x-esrehber
        etx=text/x-setext
        evy=application/envoy
        exe=application/octet-stream
        f77=text/x-fortran
        f90=text/x-fortran
        f=text/x-fortran
        fdf=application/vndfdf
        fif=application/fractals
        fli=video/fli
        flo=image/florian
        flv=video/x-flv
        flx=text/vndfmiflexstor
        fmf=video/x-atomic3d-feature
        for=text/x-fortran
        fpx=image/vndfpx
        frl=application/freeloader
        funk=audio/make
        g3=image/g3fax
        g=text/plain
        gif=image/gif
        gl=video/gl
        gsd=audio/x-gsm
        gsm=audio/x-gsm
        gsp=application/x-gsp
        gss=application/x-gss
        gtar=application/x-gtar
        gz=application/x-compressed
        gzip=application/x-gzip
        h=text/x-h
        hdf=application/x-hdf
        help=application/x-helpfile
        hgl=application/vndhp-hpgl
        hh=text/x-h
        hlb=text/x-script
        hlp=application/hlp
        hpg=application/vndhp-hpgl
        hpgl=application/vndhp-hpgl
        hqx=application/binhex
        hta=application/hta
        htc=text/x-component
        htm=text/html
        html=text/html
        htmls=text/html
        htt=text/webviewhtml
        htx=text/html
        ice=x-conference/x-cooltalk
        ico=image/x-icon
        ics=text/calendar
        icz=text/calendar
        idc=text/plain
        ief=image/ief
        iefs=image/ief
        iges=application/iges
        igs=application/iges
        ima=application/x-ima
        imap=application/x-httpd-imap
        inf=application/inf
        ins=application/x-internett-signup
        ip=application/x-ip2
        isu=video/x-isvideo
        it=audio/it
        iv=application/x-inventor
        ivr=i-world/i-vrml
        ivy=application/x-livescreen
        jam=audio/x-jam
        jav=text/x-java-source
        java=text/x-java-source
        jcm=application/x-java-commerce
        jfif-tbnl=image/jpeg
        jfif=image/jpeg
        jnlp=application/x-java-jnlp-file
        jpe=image/jpeg
        jpeg=image/jpeg
        jpg=image/jpeg
        jps=image/x-jps
        js=application/javascript
        json=application/json
        jut=image/jutvision
        kar=audio/midi
        karbon=application/vnd.kde.karbon
        kfo=application/vnd.kde.kformula
        flw=application/vnd.kde.kivio
        kml=application/vnd.google-earth.kml+xml
        kmz=application/vnd.google-earth.kmz
        kon=application/vnd.kde.kontour
        kpr=application/vnd.kde.kpresenter
        kpt=application/vnd.kde.kpresenter
        ksp=application/vnd.kde.kspread
        kwd=application/vnd.kde.kword
        kwt=application/vnd.kde.kword
        ksh=text/x-scriptksh
        la=audio/nspaudio
        lam=audio/x-liveaudio
        latex=application/x-latex
        lha=application/lha
        lhx=application/octet-stream
        list=text/plain
        lma=audio/nspaudio
        log=text/plain
        lsp=text/x-scriptlisp
        lst=text/plain
        lsx=text/x-la-asf
        ltx=application/x-latex
        lzh=application/octet-stream
        lzx=application/lzx
        m1v=video/mpeg
        m2a=audio/mpeg
        m2v=video/mpeg
        m3u=audio/x-mpegurl
        m=text/x-m
        man=application/x-troff-man
        manifest=text/cache-manifest
        map=application/x-navimap
        mar=text/plain
        mbd=application/mbedlet
        mc$=application/x-magic-cap-package-10
        mcd=application/mcad
        mcf=text/mcf
        mcp=application/netmc
        me=application/x-troff-me
        mht=message/rfc822
        mhtml=message/rfc822
        mid=application/x-midi
        midi=application/x-midi
        mif=application/x-frame
        mime=message/rfc822
        mjf=audio/x-vndaudioexplosionmjuicemediafile
        mjpg=video/x-motion-jpeg
        mm=application/base64
        mme=application/base64
        mod=audio/mod
        moov=video/quicktime
        mov=video/quicktime
        movie=video/x-sgi-movie
        mp2=audio/mpeg
        mp3=audio/mpeg
        mp4=video/mp4
        mpa=audio/mpeg
        mpc=application/x-project
        mpe=video/mpeg
        mpeg=video/mpeg
        mpg=video/mpeg
        mpga=audio/mpeg
        mpp=application/vndms-project
        mpt=application/x-project
        mpv=application/x-project
        mpx=application/x-project
        mrc=application/marc
        ms=application/x-troff-ms
        mv=video/x-sgi-movie
        my=audio/make
        mzz=application/x-vndaudioexplosionmzz
        nap=image/naplps
        naplps=image/naplps
        nc=application/x-netcdf
        ncm=application/vndnokiaconfiguration-message
        nif=image/x-niff
        niff=image/x-niff
        nix=application/x-mix-transfer
        nsc=application/x-conference
        nvd=application/x-navidoc
        o=application/octet-stream
        oda=application/oda
        odb=application/vnd.oasis.opendocument.database
        odc=application/vnd.oasis.opendocument.chart
        odf=application/vnd.oasis.opendocument.formula
        odg=application/vnd.oasis.opendocument.graphics
        odi=application/vnd.oasis.opendocument.image
        odm=application/vnd.oasis.opendocument.text-master
        odp=application/vnd.oasis.opendocument.presentation
        ods=application/vnd.oasis.opendocument.spreadsheet
        odt=application/vnd.oasis.opendocument.text
        oga=audio/ogg
        ogg=audio/ogg
        ogv=video/ogg
        omc=application/x-omc
        omcd=application/x-omcdatamaker
        omcr=application/x-omcregerator
        otc=application/vnd.oasis.opendocument.chart-template
        otf=application/vnd.oasis.opendocument.formula-template
        otg=application/vnd.oasis.opendocument.graphics-template
        oth=application/vnd.oasis.opendocument.text-web
        oti=application/vnd.oasis.opendocument.image-template
        otm=application/vnd.oasis.opendocument.text-master
        otp=application/vnd.oasis.opendocument.presentation-template
        ots=application/vnd.oasis.opendocument.spreadsheet-template
        ott=application/vnd.oasis.opendocument.text-template
        p10=application/pkcs10
        p12=application/pkcs-12
        p7a=application/x-pkcs7-signature
        p7c=application/pkcs7-mime
        p7m=application/pkcs7-mime
        p7r=application/x-pkcs7-certreqresp
        p7s=application/pkcs7-signature
        p=text/x-pascal
        part=application/pro_eng
        pas=text/pascal
        pbm=image/x-portable-bitmap
        pcl=application/vndhp-pcl
        pct=image/x-pict
        pcx=image/x-pcx
        pdb=chemical/x-pdb
        pdf=application/pdf
        pfunk=audio/make
        pgm=image/x-portable-graymap
        pic=image/pict
        pict=image/pict
        pkg=application/x-newton-compatible-pkg
        pko=application/vndms-pkipko
        pl=text/x-scriptperl
        plx=application/x-pixclscript
        pm4=application/x-pagemaker
        pm5=application/x-pagemaker
        pm=text/x-scriptperl-module
        png=image/png
        pnm=application/x-portable-anymap
        pot=application/mspowerpoint
        pov=model/x-pov
        ppa=application/vndms-powerpoint
        ppm=image/x-portable-pixmap
        pps=application/mspowerpoint
        ppt=application/mspowerpoint
        ppz=application/mspowerpoint
        pre=application/x-freelance
        prt=application/pro_eng
        ps=application/postscript
        psd=application/octet-stream
        pvu=paleovu/x-pv
        pwz=application/vndms-powerpoint
        py=text/x-scriptphyton
        pyc=application/x-bytecodepython
        qcp=audio/vndqcelp
        qd3=x-world/x-3dmf
        qd3d=x-world/x-3dmf
        qif=image/x-quicktime
        qt=video/quicktime
        qtc=video/x-qtc
        qti=image/x-quicktime
        qtif=image/x-quicktime
        ra=audio/x-pn-realaudio
        ram=audio/x-pn-realaudio
        rar=application/x-rar-compressed
        ras=application/x-cmu-raster
        rast=image/cmu-raster
        rdf=application/rdf+xml
        rexx=text/x-scriptrexx
        rf=image/vndrn-realflash
        rgb=image/x-rgb
        rm=application/vndrn-realmedia
        rmi=audio/mid
        rmm=audio/x-pn-realaudio
        rmp=audio/x-pn-realaudio
        rng=application/ringing-tones
        rnx=application/vndrn-realplayer
        roff=application/x-troff
        rp=image/vndrn-realpix
        rpm=audio/x-pn-realaudio-plugin
        rt=text/vndrn-realtext
        rtf=application/rtf
        rtx=application/rtx
        rv=video/vndrn-realvideo
        s=text/x-asm
        s3m=audio/s3m
        s7z=application/x-7z-compressed
        saveme=application/octet-stream
        sbk=application/x-tbook
        scm=text/x-scriptscheme
        sdml=text/plain
        sdp=application/sdp
        sdr=application/sounder
        sea=application/sea
        set=application/set
        sgm=text/x-sgml
        sgml=text/x-sgml
        sh=text/x-scriptsh
        shar=application/x-bsh
        shtml=text/x-server-parsed-html
        sid=audio/x-psid
        skd=application/x-koan
        skm=application/x-koan
        skp=application/x-koan
        skt=application/x-koan
        sit=application/x-stuffit
        sitx=application/x-stuffitx
        sl=application/x-seelogo
        smi=application/smil
        smil=application/smil
        snd=audio/basic
        sol=application/solids
        spc=text/x-speech
        spl=application/futuresplash
        spr=application/x-sprite
        sprite=application/x-sprite
        spx=audio/ogg
        src=application/x-wais-source
        ssi=text/x-server-parsed-html
        ssm=application/streamingmedia
        sst=application/vndms-pkicertstore
        step=application/step
        stl=application/sla
        stp=application/step
        sv4cpio=application/x-sv4cpio
        sv4crc=application/x-sv4crc
        svf=image/vnddwg
        svg=image/svg+xml
        svr=application/x-world
        swf=application/x-shockwave-flash
        t=application/x-troff
        talk=text/x-speech
        tar=application/x-tar
        tbk=application/toolbook
        tcl=text/x-scripttcl
        tcsh=text/x-scripttcsh
        tex=application/x-tex
        texi=application/x-texinfo
        texinfo=application/x-texinfo
        text=text/plain
        tgz=application/gnutar
        tif=image/tiff
        tiff=image/tiff
        tr=application/x-troff
        tsi=audio/tsp-audio
        tsp=application/dsptype
        tsv=text/tab-separated-values
        turbot=image/florian
        tte=application/x-font-ttf
        ttf=application/x-font-ttf
        ttl=text/turtle
        txt=text/plain
        uil=text/x-uil
        uni=text/uri-list
        unis=text/uri-list
        unv=application/i-deas
        uri=text/uri-list
        uris=text/uri-list
        ustar=application/x-ustar
        uu=text/x-uuencode
        uue=text/x-uuencode
        vcd=application/x-cdlink
        vcf=text/x-vcard
        vcard=text/x-vcard
        vcs=text/x-vcalendar
        vda=application/vda
        vdo=video/vdo
        vew=application/groupwise
        viv=video/vivo
        vivo=video/vivo
        vmd=application/vocaltec-media-desc
        vmf=application/vocaltec-media-file
        voc=audio/voc
        vos=video/vosaic
        vox=audio/voxware
        vqe=audio/x-twinvq-plugin
        vqf=audio/x-twinvq
        vql=audio/x-twinvq-plugin
        vrml=application/x-vrml
        vrt=x-world/x-vrt
        vsd=application/x-visio
        vst=application/x-visio
        vsw=application/x-visio
        w60=application/wordperfect60
        w61=application/wordperfect61
        w6w=application/msword
        wav=audio/wav
        wb1=application/x-qpro
        wbmp=image/vnd.wap.wbmp
        web=application/vndxara
        webm=video/webm
        wiz=application/msword
        wk1=application/x-123
        wmf=windows/metafile
        wml=text/vnd.wap.wml
        wmlc=application/vnd.wap.wmlc
        wmls=text/vnd.wap.wmlscript
        wmlsc=application/vnd.wap.wmlscriptc
        woff=application/font-woff
        woff2=application/font-woff2
        word=application/msword
        wp5=application/wordperfect
        wp6=application/wordperfect
        wp=application/wordperfect
        wpd=application/wordperfect
        wq1=application/x-lotus
        wri=application/mswrite
        wrl=application/x-world
        wrz=model/vrml
        wsc=text/scriplet
        wsrc=application/x-wais-source
        wtk=application/x-wintalk
        x-png=image/png
        xbm=image/x-xbitmap
        xdr=video/x-amt-demorun
        xgz=xgl/drawing
        xif=image/vndxiff
        xl=application/excel
        xla=application/excel
        xlb=application/excel
        xlc=application/excel
        xld=application/excel
        xlk=application/excel
        xll=application/excel
        xlm=application/excel
        xls=application/excel
        xlt=application/excel
        xlv=application/excel
        xlw=application/excel
        xm=audio/xm
        xml=application/xml
        xmz=xgl/movie
        xpi=application/x-xpinstall
        xpix=application/x-vndls-xpix
        xpm=image/x-xpixmap
        xsr=video/x-amt-showrun
        xwd=image/x-xwd
        xyz=chemical/x-pdb
        z=application/x-compress
        zip=application/zip
        zoo=application/octet-stream
        zsh=text/x-scriptzsh

        # Office 2007 mess - http://wdg.uncc.edu/Microsoft_Office_2007_MIME_Types_for_Apache_and_IIS
        docx=application/vnd.openxmlformats-officedocument.wordprocessingml.document
        docm=application/vnd.ms-word.document.macroEnabled.12
        dotx=application/vnd.openxmlformats-officedocument.wordprocessingml.template
        dotm=application/vnd.ms-word.template.macroEnabled.12
        xlsx=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
        xlsm=application/vnd.ms-excel.sheet.macroEnabled.12
        xltx=application/vnd.openxmlformats-officedocument.spreadsheetml.template
        xltm=application/vnd.ms-excel.template.macroEnabled.12
        xlsb=application/vnd.ms-excel.sheet.binary.macroEnabled.12
        xlam=application/vnd.ms-excel.addin.macroEnabled.12
        pptx=application/vnd.openxmlformats-officedocument.presentationml.presentation
        pptm=application/vnd.ms-powerpoint.presentation.macroEnabled.12
        ppsx=application/vnd.openxmlformats-officedocument.presentationml.slideshow
        ppsm=application/vnd.ms-powerpoint.slideshow.macroEnabled.12
        potx=application/vnd.openxmlformats-officedocument.presentationml.template
        potm=application/vnd.ms-powerpoint.template.macroEnabled.12
        ppam=application/vnd.ms-powerpoint.addin.macroEnabled.12
        sldx=application/vnd.openxmlformats-officedocument.presentationml.slide
        sldm=application/vnd.ms-powerpoint.slide.macroEnabled.12
        thmx=application/vnd.ms-officetheme
        onetoc=application/onenote
        onetoc2=application/onenote
        onetmp=application/onenote
        onepkg=application/onenote
        # koffice

        # iWork
        key=application/x-iwork-keynote-sffkey
        kth=application/x-iwork-keynote-sffkth
        nmbtemplate=application/x-iwork-numbers-sfftemplate
        numbers=application/x-iwork-numbers-sffnumbers
        pages=application/x-iwork-pages-sffpages
        template=application/x-iwork-pages-sfftemplate

        # Extensions for Mozilla apps (Firefox and friends)
        xpi=application/x-xpinstall
      """
  }

  filters {
    # List of enabled filters as fully qualified class names
    # enabled = []

    # List of disabled filters as fully qualified class names
    disabled = []
  }

  temporaryFile {
    # Removes stale temporary files from the filesystem.  This is a backup
    # to the "remove-on-gc" functionality in the default temporary file creator,
    # for when GC is not happening fast enough.  Uses play.http.blockingIoDispatcher.
    reaper {
      enabled = false
      initialDelay = "5 minutes"
      interval = "5 minutes"
      olderThan = "5 minutes"
    }
  }

  # The ApplicationLoader to use for creating the Application.
  # This MUST either be set in application.conf or in some module.
  #application.loader = null

  modules {

    # The enabled modules that should be automatically loaded.
    enabled += "play.api.inject.BuiltinModule"
    enabled += "play.api.i18n.I18nModule"
    enabled += "play.api.mvc.CookiesModule"
    enabled += "controllers.AssetsModule"

    # A way to disable modules that are automatically enabled
    disabled = []

  }

  # Internationalisation configuration
  i18n {

    # The languages supported by this application
    langs = []

    # A path to prefix message file loading with.  Use this if you want to place your messages resources at some path
    # other than the root application path.
    path = null

    # The name of the cookie to store the Play language in.  This cookie is set when MessagesApi.setLang is invoked, and
    # read when the preferred lang is loaded.
    langCookieName = "PLAY_LANG"

    # Whether the language cookie should be secure or not
    langCookieSecure = false

    # Whether the HTTP only attribute of the cookie should be set to true
    langCookieHttpOnly = false

    # The value of the SameSite attribute of the cookie. Set to null for no SameSite attribute.
    # Possible values are "lax" and "strict". If misconfigured it's set to null.
    langCookieSameSite = "lax"

  }

  akka {

    # The name of the actor system that Play creates
    actor-system = "application"

    # How long Play should wait for Akka to shutdown before timing it.  If "infinite" or null, waits indefinitely.
    shutdown-timeout = infinite

    # The location to read Play's Akka configuration from
    config = "akka"

    # The blocking IO dispatcher, used for serving files/resources from the file system or classpath.
    blockingIoDispatcher {
      fork-join-executor {
        parallelism-factor = 3.0
      }

    }

    # The dev mode actor system. Play typically uses the application actor system, however, in dev mode, an actor
    # system is needed that outlives the application actor system, since the HTTP server will need to use this, and it
    # lives through many application (and therefore actor system) restarts.
    dev-mode {
      # Turn off dead letters until Akka HTTP server is stable
      log-dead-letters = off

      # Disable Akka-HTTP's transparent HEAD handling. so that play's HEAD handling can take action
      http.server.transparent-head-requests = false

      akka {

        # Since Akka 2.5.8 there's a setting to disable all Akka-provided JVM shutdown
        # hooks. This will not only enable CoordinatedShutdown but also Artery or other
        # Akka-managed hooks.
        jvm-shutdown-hooks = on

        # CoordinatedShutdown is an extension introduced in Akka 2.5 that will
        # perform registered tasks in the order that is defined by the phases.
        # This setup override Akka default settings with Play-specific ones for dev mode.
        coordinated-shutdown {

          # Terminate the ActorSystem in the last phase actor-system-terminate.
          terminate-actor-system = on

          # This setting is on the `dev-mode` specific settings and is only used by the Server. It
          # doesn't make sense to exit the JVM in Dev mode.
          exit-jvm = off

          # Run the coordinated shutdown when the JVM process exits, e.g.
          # via kill SIGTERM signal. This setting is on the `dev-mode` specific settings and is
          # only used by the Server. Defaults to 'on' since exiting the build tool (sbt/gradle/...)
          # should cause the execution of `coordinated-shutdown`.
          run-by-jvm-shutdown-hook = on
        }
      }
    }
  }

  #Assets configuration
  assets {

    # The path on the classpath where assets are located (should be the same as the path parameter in route)
    path = "/public"
    # The URL prefix before your asset name (excluding the trailing slash)
    urlPrefix = "/assets"

    #Default behaviour for checkForMinified is false for dev and true for non-dev modes
    checkForMinified = null

    defaultCache = "public, max-age=3600"

    aggressiveCache = "public, max-age=31536000, immutable"

    digest.algorithm = "md5"

    default.charset = "utf-8"

    # registrations which have charset="utf-8" appended to the content-type header.
    textContentTypes = [ "application/json", "application/javascript" ]

    # This defines which compressions of assets are served by the Assets controller
    # and which priorities they have. E.g. having "br" as first entry and "gzip" as
    # second one will serve a brotli compressed asset rather than a gzip compressed
    # asset to a client supporting both compressions.
    #
    # It also defines for which kind of compressed assets we're looking for on the classpath.
    # If you know, you only provide certain kinds of compressions, disable the others to get
    # a little bit more performance out of your application.
    encodings = [
      { accept: "br", extension: "br"}
      { accept: "gzip", extension: "gz" }
      { accept: "xz", extension: "xz" }
      { accept: "bz2", extension: "bz2" }
    ]

  }

}
