<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xml:lang="en-US"
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:appf="http://www.appfolio.com/20221231"
  xmlns:dei="http://xbrl.sec.gov/dei/2022"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:srt="http://fasb.org/srt/2022"
  xmlns:us-gaap="http://fasb.org/us-gaap/2022"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <link:schemaRef xlink:href="appf-20221231.xsd" xlink:type="simple"/>
    <context id="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i07fa3a77ee63401ca0d4a18b0774569c_I20220630">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2022-06-30</instant>
        </period>
    </context>
    <context id="ic9ef5998fd0f43f3bae922e2e589c06c_I20230202">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-02-02</instant>
        </period>
    </context>
    <context id="ice869c6b671c479099bb234305268af8_I20230202">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-02-02</instant>
        </period>
    </context>
    <context id="i0706e23451794b11aa4b0abc25d9abf3_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="if54915a015e84a12a062a577eca8bccd_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i24ee6eca4c0c4218954cff9dce4a7ca4_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i23b41d70d72d4c978f39a50cf813a80e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i56e9019ac2d8406aa79991d05ec1182c_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i59c9cb8e17a34f57be75f129ff27f777_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ia735bb183e144879abd4ff7d4e12f395_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ibdc9f142666e489da579adbe7cba6a09_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id2de94e1428d45909dadaec3d7a96bd0_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ib046f57c674c4065bcf069bd5ec92509_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ia9f84d3efe644002890e705a403c612d_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7be16c094abd4be78b8207dbd5f64c4c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i14c8fcbfe03f4fe4b4035f1b6169c777_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ib32b4f06ae454f978288ad7c57573acc_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ic8e91d6ad72a4ed4ba9d71ea85f4f4b4_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if0fb212911fd4df1a926c7f20bec59aa_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i7927e257714740ed96c4337da600edb9_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib180028f7f3945f89c581895daf45b16_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i587e0d26d2354f2280b601388387d653_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i0ac83b97894848dba4bbf5184d62359c_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i776d871a06a54053b2c9466247a9d87a_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i44b0d9ca225a46db8cccb297de88469d_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ifbaf1beaa5014b8f8d6ca63692104b6c_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i2750226f20e7473fa9c211c414170274_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="id6e34c5cedfb495280df512e0d435d87_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ieb24e4641dd5452da2d76abd1cd95cde_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i6b120f0b671942ccb082cf0d8e0b620a_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i5b6ba71f116f4f588acb1fa18d6f6950_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i4a7191f27e6c409e9aeb2bfa0d0f16c4_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i4aa6e69674994dbf959b4253ee7da723_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7245afa2ac9d4ac7b4226765e38694ef_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="icb5758be40394a56a66ce331e55d6a69_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i9a19e5fcc01447b38977aaa2fc3d0673_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i4731118295a445578b01bd7c9f7f9549_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="id7546c1c4bee44058d6c08652727724b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ia66a1b09748f4f99b6005cfb78bfd998_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i7180ec38d0784b25ad3595047950435b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i1acdec4ac7294ef68ce79b20f48da1b6_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="idd59834810c84b1790a47b26e0928ae1_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i666dc262db714243b7ae16105866e6c3_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i1edb8ba9212d4406b183d6fc0adde073_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="icd31c189c1694b3c95866b469bfe3f19_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i1d383d40f5f345e0a7112df121dab924_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6cc8692c404643778776a19b2e4cded2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i0c54fcf15e534197a318414c0b34ff3b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ifb93b53b409b41c993b33d081e13a11a_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i2fbf73727b074e01a76a87558a977881_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i77721e150e024e2190d45e2ceeddb2bc_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7d4b492341314d63892874b97c4ed547_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i9c3e5ae02ac149be90f95f73c3ccd707_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i20e743e1aa2b489e9ebec344939512f8_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ief9c773e877a45f9b6758e3fb934ef47_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i4eebf946cf6a4c5eaa19ff54d12be884_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="id9874a7ad3ce4ea0aae0b53e453e2baf_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ib7713d27c2d445be88201ff37ab57ebf_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i0e106da795754b6a946df49fe3ccd330_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ida05ec3a6b2649f2a445d77a8e8f2ace_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i5b3ecd7813f04ee1b51a02b4f14d29da_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i50200a188dc848be98a094e44ee1cb63_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ib9902d0a55894c57a2d3495203e46d95_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i61946b80fdff478aa3fc8c6d87e620d0_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i0fe71a87dbfe4d058ddb6776740e3572_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i549bba795c8f4ae698a61021c3687e34_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i5c0714d245a3425fb525df7a7f531280_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:SoftwareAndSoftwareDevelopmentCostsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ifab0afcf0bdd4be39027165c92a55f03_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:typedMember dimension="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis">
                    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>2023-01-01</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>
                </xbrldi:typedMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i42e890ec92ad4818ba2c3db7bc576b88_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="iaf98d5776b9d4d3ba062f45eb90c9192_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if110068fe75d4b48b640bb97016e99d7_I20220831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DisposalGroupClassificationAxis">us-gaap:DisposalGroupDisposedOfBySaleNotDiscontinuedOperationsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">appf:WegoWiseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-08-31</instant>
        </period>
    </context>
    <context id="ia6df958703f045058ba18ffc2a6b3cba_D20220831-20220831">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DisposalGroupClassificationAxis">us-gaap:DisposalGroupDisposedOfBySaleNotDiscontinuedOperationsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">appf:WegoWiseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-08-31</startDate>
            <endDate>2022-08-31</endDate>
        </period>
    </context>
    <context id="ic9760a61c6d24d429a0398d5a042524d_I20200930">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DisposalGroupClassificationAxis">us-gaap:DiscontinuedOperationsDisposedOfBySaleMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">appf:MyCaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-09-30</instant>
        </period>
    </context>
    <context id="ibdcae5db1ba04c99a3a11408ce4f760d_D20200930-20200930">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DisposalGroupClassificationAxis">us-gaap:DiscontinuedOperationsDisposedOfBySaleMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">appf:MyCaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-09-30</startDate>
            <endDate>2020-09-30</endDate>
        </period>
    </context>
    <context id="ia84f26d8bc8248e0991a452a1527f6b0_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DisposalGroupClassificationAxis">us-gaap:DiscontinuedOperationsDisposedOfBySaleMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">appf:MyCaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib222734d87fa4355a217690830270154_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DisposalGroupClassificationAxis">us-gaap:DiscontinuedOperationsDisposedOfBySaleMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">appf:MyCaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i61b2085d442b40c58655e2af9839ee4e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i7f8ca90760eb41d2a41f6e5f3a9905cd_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i00d1212c729c43b6a49b2b18d98bf8c3_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="if01d5763ed4f47248086fea019a83647_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="icf3f13e25ab7429390c1f6cf393f8e67_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7e8d95487c9a4a64b47ae42c9c2db1c1_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i149e4870322c4f52bf0ff68a99ce470e_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i61fcc2c143394e90ad73f6571752b640_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i82835f22a1e04851901c85b736bf8e00_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="iad6d0c7eec3e4708a2327d5ef2290a64_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ieff32a01ebc7407eb642865666dc5568_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i5af7913798e6470aafd7cadf5be776ed_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ie8b81428d416445f86a40fc4eb5b7a20_D20211220-20211220">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ScheduleOfEquityMethodInvestmentEquityMethodInvesteeNameAxis">appf:SecureDocsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:OtherNonoperatingIncomeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-12-20</startDate>
            <endDate>2021-12-20</endDate>
        </period>
    </context>
    <context id="ic22f79506ab24f95b4dc8c6f8452a9a9_D20211220-20211220">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ScheduleOfEquityMethodInvestmentEquityMethodInvesteeNameAxis">appf:SecureDocsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-12-20</startDate>
            <endDate>2021-12-20</endDate>
        </period>
    </context>
    <context id="i1e53e7f2321a43ac8324d46a1ca618fc_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i3685fdaca9204a32b51d5f9f9c845aa2_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i46e46e6ff4d94b01be8713a4b60aaac2_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i9131f18b28204079b455032539212a2c_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic9a8da91339e4da187d242302fcd6513_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i5f41208233a9403ea87d42c17bd01363_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i389895b9e53948bea40f205c242ff7ac_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i3e299d58abcc488891e87cae9711dd59_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i0685e42103d74f0ba426949909167ddf_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ia8809cf425f545ba8a8857e373b7c14e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i263a06f740d84086a3f2a099072cfd23_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic234cd04b25d457285e4067e25da7865_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ibf3f1dfcdd36491f92555a9fd04130dd_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i8f166cbec7a741f2af78691bb4318c39_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="if80d0714f9a44509b09a041e5a9ce457_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i46c0c512ad564b13bc453d6174225575_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id8be1ef55771495c9ec086438a314f14_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id80c0e0114054dc1a8eebaf40a3d1c5e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i575fec453d8f4f789594419beaf11c93_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i54355cae8d234fb3b782a36ce673949b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iea17d08eda1f4b15a75837184f3ca728_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i5acfa2c079ed448a8e897076310d2509_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ida37d7a661ec4dec8675542b1743c5b3_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7b975d2da5cb4bbcabd869f08af25731_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i8e868cbf5b5c4b42b271ad0cbd218676_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i05fa8b9e88df4e3a8a6e3ff3b42feb5d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6bbaa0bba5294d7cb1d842b9d48af656_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AgencySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ie9cdfd4ed93d46a48cacc6f912d7d588_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i128f91c5735f4ce399db8b976cff509e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i55b56071b35c456dbdfec0d3349c9bf4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryAndGovernmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i81af3d00c7ed496094d2c039abb49c9b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i5124604a29294e1789760ebf08fa5d64_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ie0af51c63ac74252901ff67d861b8d85_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i25a8a96518f744af8ac18a86e779f779_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="idfcd30e248f0465fa9f32cb470950835_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i44dc401ff6c64b9f85e2522dbb18fed0_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i8ab322f90bf3426091055446bbce7902_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ibaaddf346e524ee3b2d1a864d013fa23_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ia17e168941364d48878b27ca5083efa4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="if0a43cb3ab6f44099ebe2839d94e00b2_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i65b4976aadea4041bb36bc5c4b54506f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i715c49cce98b48fc8c7ec14c9b6639a1_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ConstructionInProgressMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i79aeea456bd1451faff7dbd02d523f06_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ConstructionInProgressMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i24a2eaef70e744ceb71f26c143f59a2c_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i8e3cea8a3bcb44879f6d143dfb3a6413_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i644af7828ca04e86bc604cc0e39d7a85_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:DatabaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ib0e5af2403624369b997ccd8f6c698c4_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:DatabaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i1103cfbbafa24957a73d27c079a6832f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:TechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iaced556e4304413283dea277c74bbf7d_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:TechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i89667f7b139c492aaa2e289652321adf_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ia31dff2dce60455e97dddf27f3e76dcc_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ic5fa38e8c5fa4b17a493cff11f5f7701_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:PartnerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i226d97973be04873b0cbebd4ce00c9c9_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:PartnerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ic13a7c6f285948b9ba61cc25f7d18848_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ifa6a7eda2af145ee9725069e9e705001_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i8a84883f05c84d5ebc21e303e558052e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InternetDomainNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="iefb927bf04ac4c88ab79db8dcd4437fc_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InternetDomainNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="iecd5aa98bedb4d2094de3c56ffb027ad_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i6690d96540024c81ba287a40782e4502_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i4e6f801342894f8e939b2740404cf365_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="id0d77824f7a64301b77657eafd6d0a44_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i194b9b2e031145f181b03c9c09655ba8_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ie0cebd2c09614354909c34197636ebc1_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:DatabaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i5a3d92271b9848bebb1327b7a111a2bc_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:DatabaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i1cefffe0a8f84349a0961191a75f2b24_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:TechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i10a2639b2d4d49619e677131e9b846b7_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:TechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8858ed00f5d542ec8191c31e53c75f8b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7e0a58a7a41c458b95abf816888cd9fc_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i30c6bfad3e0d4a4eb4edfdf2192b3886_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:PartnerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i30b06955d45442f6889f15bdd53bfdd0_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">appf:PartnerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i041f0ed39a774fefb9308e3e30223b06_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6d3653b133d3488c8c827f971435d8e4_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i3576d4a814fc4da49cd7630853354e58_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InternetDomainNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="icbff25ec6f80490584a28dcbe7738620_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InternetDomainNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8e218856f9514914829c80b2bf12f11d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i663477a5682646cd903ed8aafdcbef8e_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i431251433d2b432594073410a12b3518_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i42dfeb31b022423b9136af67bc357ff9_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i7307b69f261845acab990dd705217466_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i72a3ae10c29446fc8f4026043c2d4583_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherCurrentLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i3c93b5658765457795260a13ec413dad_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherCurrentLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ibbafbdaddeb747d990bba162e7d7ffcf_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherCurrentAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ida8bd57071df4b259033792ced2354e7_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherCurrentAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i506a016a6e9341dfa2093ed935c11d4e_I20150625">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2015-06-25</instant>
        </period>
    </context>
    <context id="i486bf6e1059c437692ec86ee91f33912_I20150625">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2015-06-25</instant>
        </period>
    </context>
    <context id="i25d1c29978264825a8101593c7263922_I20150625">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2015-06-25</instant>
        </period>
    </context>
    <context id="i212fe600a3184904be9746d69c040c2d_I20150625">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:PreferredStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2015-06-25</instant>
        </period>
    </context>
    <context id="i7f8abd3a26204976b7e27d8426b5aa79_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ib3012faadbe74b9e978c86340ff59230_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i57c2a59b33ce40bc894cb736e09a068c_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConversionOfStockByUniqueDescriptionAxis">appf:CommonClassBToCommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="icc1fa99cdb6f4f42b7b46da014904052_I20190220">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <instant>2019-02-20</instant>
        </period>
    </context>
    <context id="if774862617fc44cbba4a1a7fd8080d77_I20151231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2015-12-31</instant>
        </period>
    </context>
    <context id="i02bbde10d21e49b499061d54a14a61ac_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i621bb8d156354fcdb79735b68df62bfe_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i3bacb6be24d84e92b1bf42e6e4e7aef3_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="if6e14c2a45fe439eaaaf6e55b5b7927f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ide8dfe7ee45d462193394690593e8c0d_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsWithServiceConditionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ic8a3790ae6174e50aaf1dbf17697dda0_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsWithServiceAndPerformanceConditionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i582945bb60be4ca7ad00050a00bdb3a8_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ieb85f5e149434170b300e28e314881a6_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="if17c8bf62a1942a494856c24bc1b1106_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="idb0fcfd4c7a34ead92b5e236f3d0c353_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i3aea1974e954450ea895869ef79a4878_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ic7f579907b294dbfbbffc2c18c80090b_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ie4f1018583744fd8bd4355399815f18b_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i123adec116254bbd8bbebbdd97700928_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i89494c497dba4e6fa857631e6848c8fc_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i112a5d35139c4cf5bd15d865d9be67c9_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheThreeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i8bb61f530daa44b4b0a33713b0011fa4_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:PerformanceStockUnitsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">us-gaap:ShareBasedCompensationAwardTrancheThreeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i3be12c153d8145d0b428a88a88bbb1dd_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsAndPerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ic39a40161c1b4ef9a1578a0dc539b439_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsAndPerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i39b5edc6741742d6994df3d56858048f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsAndPerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iab43d4f279a248a3ab83a7044bad467b_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">appf:RestrictedStockUnitsAndPerformanceStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id07f23c6df2f4b1a87836bcd367b4124_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i93510741c63949d48a3f1ad57bd35bac_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i8763390a7a5848ec86ca75289b16ebf1_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i2d1226bd0f02418bae67abad5c244341_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i8accca143ca241a7a01feab369ded42e_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TaxCreditCarryforwardAxis">us-gaap:ResearchMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="id3ebfe2a99484c0cbc4e002aabcf5062_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TaxCreditCarryforwardAxis">us-gaap:ResearchMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i2b79e1ce709c4d17b0fc1172cf2f9795_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:CoreSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ia1a94ab455bc4876ab9a70db5a58c7eb_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:CoreSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i49ad3d82a8a2467bafeb8a93cc25d274_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:CoreSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ib7f25b66e6cb4c6f8e384b4efc219215_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:ValuePlusServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i9e5a6b628c4745c2ae9e3a7feebddfad_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:ValuePlusServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i5b3df90813204cccbc1381715f5485dd_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:ValuePlusServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i586d703595cb4b7688a06a99cf3251db_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:OtherServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i008f5b27aedd47b684ae849ccb9b8de0_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:OtherServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8ee25b3ad7c74ed8b97f95a7d436b31c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001433195</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">appf:OtherServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <unit id="usd">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="shares">
        <measure>shares</measure>
    </unit>
    <unit id="usdPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <unit id="segment">
        <measure>appf:segment</measure>
    </unit>
    <unit id="number">
        <measure>pure</measure>
    </unit>
    <unit id="votepershare">
        <measure>appf:votePerShare</measure>
    </unit>
    <unit id="director">
        <measure>appf:director</measure>
    </unit>
    <unit id="plan">
        <measure>appf:plan</measure>
    </unit>
    <dei:EntityCentralIndexKey
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl80L2ZyYWc6ODIwYTg2YWI5NzY4NGIyNjg3NmY0YmE4NWZhYzEzODcvdGFibGU6NGRmZTJjYWIxMzMwNDk5OTk3NzliY2UwMTdkZGM1NzkvdGFibGVyYW5nZTo0ZGZlMmNhYjEzMzA0OTk5OTc3OWJjZTAxN2RkYzU3OV8xLTEtMS0xLTIxNzk3NA_a8ac550a-55da-4488-a60e-478ecb903e22">0001433195</dei:EntityCentralIndexKey>
    <dei:DocumentFiscalYearFocus
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl80L2ZyYWc6ODIwYTg2YWI5NzY4NGIyNjg3NmY0YmE4NWZhYzEzODcvdGFibGU6NGRmZTJjYWIxMzMwNDk5OTk3NzliY2UwMTdkZGM1NzkvdGFibGVyYW5nZTo0ZGZlMmNhYjEzMzA0OTk5OTc3OWJjZTAxN2RkYzU3OV8zLTEtMS0xLTIxNzk3NA_c5220c0b-977a-40c4-8a3f-7df6bf60c1f0">2022</dei:DocumentFiscalYearFocus>
    <dei:DocumentFiscalPeriodFocus
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl80L2ZyYWc6ODIwYTg2YWI5NzY4NGIyNjg3NmY0YmE4NWZhYzEzODcvdGFibGU6NGRmZTJjYWIxMzMwNDk5OTk3NzliY2UwMTdkZGM1NzkvdGFibGVyYW5nZTo0ZGZlMmNhYjEzMzA0OTk5OTc3OWJjZTAxN2RkYzU3OV80LTEtMS0xLTIxNzk3NA_a39dc711-c230-4c57-979c-734ba81ffffd">FY</dei:DocumentFiscalPeriodFocus>
    <dei:AmendmentFlag
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl80L2ZyYWc6ODIwYTg2YWI5NzY4NGIyNjg3NmY0YmE4NWZhYzEzODcvdGFibGU6NGRmZTJjYWIxMzMwNDk5OTk3NzliY2UwMTdkZGM1NzkvdGFibGVyYW5nZTo0ZGZlMmNhYjEzMzA0OTk5OTc3OWJjZTAxN2RkYzU3OV81LTEtMS0xLTIxNzk3NA_009cdc95-4d41-4c62-8ff3-7c132750f9aa">false</dei:AmendmentFlag>
    <us-gaap:ImpairmentLongLivedAssetHeldForUseStatementOfIncomeOrComprehensiveIncomeExtensibleEnumeration
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTA5OTUxMTY3OTY5Ng_2ad02eb3-5486-44ad-9073-f89333ec3519">http://fasb.org/us-gaap/2022#AssetImpairmentCharges</us-gaap:ImpairmentLongLivedAssetHeldForUseStatementOfIncomeOrComprehensiveIncomeExtensibleEnumeration>
    <us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzctMC0xLTEtMjE3OTc0_0445a1bf-14d8-420a-8bf9-a7df406fda04">http://fasb.org/us-gaap/2022#OtherLiabilitiesCurrent</us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList>
    <us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzctMC0xLTEtMjE3OTc0_3333639e-0b6e-4a70-9058-c9b49040bbe1">http://fasb.org/us-gaap/2022#OtherLiabilitiesCurrent</us-gaap:OperatingLeaseLiabilityCurrentStatementOfFinancialPositionExtensibleList>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="if17c8bf62a1942a494856c24bc1b1106_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzIxOTkwMjMyNjE5MTY_db04c102-a283-4a35-be0f-af39d73514a0">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <dei:DocumentType
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDQy_ecb7e4c2-8b8b-4a7c-a345-43d02971e680">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDM1_f5ffb726-ac64-47d1-a2cd-fcc3342d37d6">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV8yNDQ_4a38ae16-85a1-40e3-a481-a163f861dad1">2022-12-31</dei:DocumentPeriodEndDate>
    <dei:CurrentFiscalYearEndDate
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV8yNDQ_13f1621b-245b-4452-bf7f-9dd61ede558f">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentTransitionReport
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDMy_2a64ed6e-f588-4234-9cc0-bbca758dcb22">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDQz_1734649f-50fd-4366-a031-9f4424eb7fe9">001-37468</dei:EntityFileNumber>
    <dei:EntityRegistrantName
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDM3_0cca87fd-0383-4643-816b-c08dbba5c294">AppFolio, Inc.</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6NjdlZThhYWJhMDRhNDgyMjhiMDY5NzhiYWRjNzFkODgvdGFibGVyYW5nZTo2N2VlOGFhYmEwNGE0ODIyOGIwNjk3OGJhZGM3MWQ4OF8wLTAtMS0xLTIxNzk3NA_e686924d-7e50-4fb2-aef7-ed927e61984c">DE</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6NjdlZThhYWJhMDRhNDgyMjhiMDY5NzhiYWRjNzFkODgvdGFibGVyYW5nZTo2N2VlOGFhYmEwNGE0ODIyOGIwNjk3OGJhZGM3MWQ4OF8wLTQtMS0xLTIxNzk3NA_ee0cb9c7-d6e2-428b-95c7-f2139c15aab2">26-0359894</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6NjdlZThhYWJhMDRhNDgyMjhiMDY5NzhiYWRjNzFkODgvdGFibGVyYW5nZTo2N2VlOGFhYmEwNGE0ODIyOGIwNjk3OGJhZGM3MWQ4OF8zLTAtMS0xLTIxNzk3NA_beba053b-644e-4afd-8f59-7e508fc3decd">70 Castilian Drive</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6NjdlZThhYWJhMDRhNDgyMjhiMDY5NzhiYWRjNzFkODgvdGFibGVyYW5nZTo2N2VlOGFhYmEwNGE0ODIyOGIwNjk3OGJhZGM3MWQ4OF80LTAtMS0xLTIxNzk3NA_8373eeef-cd38-48d9-af18-9a6561e0aaa3">Santa Barbara,</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6NjdlZThhYWJhMDRhNDgyMjhiMDY5NzhiYWRjNzFkODgvdGFibGVyYW5nZTo2N2VlOGFhYmEwNGE0ODIyOGIwNjk3OGJhZGM3MWQ4OF80LTItMS0xLTIxNzk3NA_85356ecb-cd69-4cb9-8090-aebdecd24fd5">CA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6NjdlZThhYWJhMDRhNDgyMjhiMDY5NzhiYWRjNzFkODgvdGFibGVyYW5nZTo2N2VlOGFhYmEwNGE0ODIyOGIwNjk3OGJhZGM3MWQ4OF80LTQtMS0xLTIxNzk3NA_e67eb7f3-c4b3-49b2-8aa0-512cbf9ce3c2">93117</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDMz_6c48f2ec-b57f-47d3-8235-3931fd8cbdb6">805</dei:CityAreaCode>
    <dei:LocalPhoneNumber
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDM2_084c0305-d408-442a-a616-03c53232f98c">364-6093</dei:LocalPhoneNumber>
    <dei:Security12bTitle
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6OGFhYmM5NzQ4YWE0NGQ2Y2I4OTY3OTVhNGVlMTVhNDcvdGFibGVyYW5nZTo4YWFiYzk3NDhhYTQ0ZDZjYjg5Njc5NWE0ZWUxNWE0N18xLTAtMS0xLTIxNzk3NA_9c7ed381-d781-4c77-ab6a-a79ea88661fa">Class A common stock, par value $0.0001 per share</dei:Security12bTitle>
    <dei:TradingSymbol
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6OGFhYmM5NzQ4YWE0NGQ2Y2I4OTY3OTVhNGVlMTVhNDcvdGFibGVyYW5nZTo4YWFiYzk3NDhhYTQ0ZDZjYjg5Njc5NWE0ZWUxNWE0N18xLTItMS0xLTIxNzk3NA_4c43592f-827e-4b57-804c-6777bf2df3ea">APPF</dei:TradingSymbol>
    <dei:SecurityExchangeName
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6OGFhYmM5NzQ4YWE0NGQ2Y2I4OTY3OTVhNGVlMTVhNDcvdGFibGVyYW5nZTo4YWFiYzk3NDhhYTQ0ZDZjYjg5Njc5NWE0ZWUxNWE0N18xLTQtMS0xLTIxNzk3NA_576bdeca-6c51-4e88-bcfd-dbfcc3e04421">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDM4_24a7d2f9-4423-46a7-8d47-39f88a2aab30">Yes</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDM5_4b69290e-709a-4420-8e71-183a5ad0a87b">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDQw_e17dd3d4-fb12-4a5a-af9b-df814a844240">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDM0_21063883-ce13-4995-b1b7-a7b18917d8e4">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6ZWI5Yzg3ODE5YTYyNDFkOWIyMjc2ZDZlOTUzODExODQvdGFibGVyYW5nZTplYjljODc4MTlhNjI0MWQ5YjIyNzZkNmU5NTM4MTE4NF8wLTAtMS0xLTIxNzk3NA_bfb64785-980c-46a8-bb8d-218762ee72c9">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6ZWI5Yzg3ODE5YTYyNDFkOWIyMjc2ZDZlOTUzODExODQvdGFibGVyYW5nZTplYjljODc4MTlhNjI0MWQ5YjIyNzZkNmU5NTM4MTE4NF8yLTUtMS0xLTIxNzk3NA_04b0d2f1-4e9a-4af1-a221-b5012c089804">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGFibGU6ZWI5Yzg3ODE5YTYyNDFkOWIyMjc2ZDZlOTUzODExODQvdGFibGVyYW5nZTplYjljODc4MTlhNjI0MWQ5YjIyNzZkNmU5NTM4MTE4NF80LTUtMS0xLTIxNzk3NA_5b9f0bab-6573-463f-b2c9-51f1192c02d4">false</dei:EntityEmergingGrowthCompany>
    <dei:IcfrAuditorAttestationFlag
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDQx_e3b0b82d-2337-417d-a973-3bbedf05ff7f">true</dei:IcfrAuditorAttestationFlag>
    <dei:EntityShellCompany
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDMw_6f26fc35-048b-4421-a2f3-6378e8297ddb">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat
      contextRef="i07fa3a77ee63401ca0d4a18b0774569c_I20220630"
      decimals="-6"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV8zMjAw_f649d41a-494e-47d1-b32f-c2985711078c"
      unitRef="usd">2136000000</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="ic9ef5998fd0f43f3bae922e2e589c06c_I20230202"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV8zNzg3_4cbb342c-7001-47f9-af23-00685af17dd9"
      unitRef="shares">20649685</dei:EntityCommonStockSharesOutstanding>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="ice869c6b671c479099bb234305268af8_I20230202"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV8zODcy_08dafb0b-f48d-4682-be9c-f81e9160c3e8"
      unitRef="shares">14746432</dei:EntityCommonStockSharesOutstanding>
    <dei:DocumentsIncorporatedByReferenceTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xL2ZyYWc6YjY1NjRmMTljYjc0NDEzMzg2MTM4NmFjNGE1NGQyNDUvdGV4dHJlZ2lvbjpiNjU2NGYxOWNiNzQ0MTMzODYxMzg2YWM0YTU0ZDI0NV81MDMx_beab9435-d50a-441a-87f7-2e10cc87e491">Portions of the registrant&#x2019;s definitive Proxy Statement for the 2023 Annual Meeting of Stockholders (the &#x201c;Proxy Statement&#x201d;), to be filed with the Securities and Exchange Commission (the &#x201c;SEC&#x201d;) pursuant to Regulation 14A not later than 120 days after the end of the fiscal year covered by this Annual Report on Form&#160;10-K (this &#x201c;Annual Report&#x201d;), are incorporated by reference in Part&#160;III, Items 10-14 of this Annual Report. Except for the portions of the Proxy Statement specifically incorporated by reference in this Annual Report, the Proxy Statement shall not be deemed to be filed as part hereof.</dei:DocumentsIncorporatedByReferenceTextBlock>
    <dei:AuditorFirmId
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl81NS9mcmFnOjdiZGI2ZmQzYjQ3OTQ2ODM4NGQ0YzU3NTNkYTc5YWY3L3RhYmxlOmE2YmRkZTA2ZDliYTRjODU5YzhiZTFkMDdlY2FjMTkyL3RhYmxlcmFuZ2U6YTZiZGRlMDZkOWJhNGM4NTljOGJlMWQwN2VjYWMxOTJfMS0wLTEtMS0yMTc5NzQvdGV4dHJlZ2lvbjpmOTFkM2FhMjhlMzA0YTZmOThlZmUxZWFmYTlhMWQ0Ml83MA_13b2e78a-4b84-4d7e-950e-1f60e472837c">238</dei:AuditorFirmId>
    <dei:AuditorName
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl81OC9mcmFnOjFlOTQ3ZWFhZTU5ODQ1YmU5MmFkZWVhNGY4NjEyM2ViL3RleHRyZWdpb246MWU5NDdlYWFlNTk4NDViZTkyYWRlZWE0Zjg2MTIzZWJfODcwNA_a529cfb1-939c-4281-ac79-372d71e84a45">PricewaterhouseCoopers LLP</dei:AuditorName>
    <dei:AuditorLocation
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl81OC9mcmFnOjFlOTQ3ZWFhZTU5ODQ1YmU5MmFkZWVhNGY4NjEyM2ViL3RleHRyZWdpb246MWU5NDdlYWFlNTk4NDViZTkyYWRlZWE0Zjg2MTIzZWJfODcwNQ_6faa8dde-1a40-413b-81cb-f2f6e9324fbe">Los Angeles, California</dei:AuditorLocation>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNC0yLTEtMS0yMTc5NzQ_9002ac92-16f4-45ec-b9e1-502c3175cd61"
      unitRef="usd">70769000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNC00LTEtMS0yMTc5NzQ_1bda4279-8b1d-4e01-9bc8-f18447547124"
      unitRef="usd">57847000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNS0yLTEtMS0yMTc5NzQ_cd1dc89d-5b2e-4cf4-b918-02402931b8e4"
      unitRef="usd">89297000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNS00LTEtMS0yMTc5NzQ_68fdc311-de9b-4c57-af38-e489853eed9a"
      unitRef="usd">64600000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNi0yLTEtMS0yMTc5NzQ_9fb40f64-3df1-4385-8f8e-52b7392ece93"
      unitRef="usd">16503000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNi00LTEtMS0yMTc5NzQ_88c1ee0e-abdc-4d48-831a-7b5f6eed97f7"
      unitRef="usd">12595000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNy0yLTEtMS0yMTc5NzQ_d6243623-6eca-49ea-aa37-968fb782d915"
      unitRef="usd">24899000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNy00LTEtMS0yMTc5NzQ_da6a4e78-ca21-4513-bb57-3ed52ccf5f07"
      unitRef="usd">23553000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfOC0yLTEtMS0yMTc5NzQ_6d0eb27c-5713-4d70-8434-7422b448ba7e"
      unitRef="usd">201468000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfOC00LTEtMS0yMTc5NzQ_47382a0b-4da6-4684-a8b7-df26f3d3e3f9"
      unitRef="usd">158595000</us-gaap:AssetsCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestNoncurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfOS0yLTEtMS0yMTc5NzQ_4b821050-8f53-48b4-bbe8-ebbe6199ae87"
      unitRef="usd">25161000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestNoncurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfOS00LTEtMS0yMTc5NzQ_0500da60-762f-4343-84db-eada10e8d69a"
      unitRef="usd">61076000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterestNoncurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTAtMi0xLTEtMjE3OTc0_028bfd9b-bd91-4e5b-a5be-812186d2db97"
      unitRef="usd">26110000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTAtNC0xLTEtMjE3OTc0_7b603962-cf68-4b31-939c-03704f080b2d"
      unitRef="usd">30479000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTEtMi0xLTEtMjE3OTc0_e75a82d8-9e31-42c7-9e44-b59cf663829f"
      unitRef="usd">23485000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTEtNC0xLTEtMjE3OTc0_473f02be-4d91-4703-b12e-eb4aac88f18e"
      unitRef="usd">41710000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTItMi0xLTEtMjE3OTc0_e1a4f861-4b01-4ad4-a759-cf097a0e2115"
      unitRef="usd">35315000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTItNC0xLTEtMjE3OTc0_bb449f8c-7db1-4274-914b-42afc5f4fc45"
      unitRef="usd">41212000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:Goodwill
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTMtMi0xLTEtMjE3OTc0_16794ba0-57c8-4ce6-a550-a2ef466a6cea"
      unitRef="usd">56060000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTMtNC0xLTEtMjE3OTc0_340e1c5d-a3da-48e4-9785-6a6d6bf282db"
      unitRef="usd">56147000</us-gaap:Goodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTQtMi0xLTEtMjE3OTc0_b3443ba6-aff1-4b89-b146-5229f54663e0"
      unitRef="usd">4833000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTQtNC0xLTEtMjE3OTc0_2c6831b3-8159-4afc-ae8a-064680d371d6"
      unitRef="usd">11711000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTYtMi0xLTEtMjE3OTc0_8b2fe4da-8478-434e-b68e-7d14c190b7e8"
      unitRef="usd">8785000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTYtNC0xLTEtMjE3OTc0_39be8d64-e5ee-4ecb-805a-12f4523c7129"
      unitRef="usd">7087000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTctMi0xLTEtMjE3OTc0_31ef166a-165d-49c7-982f-9aea045ac637"
      unitRef="usd">381217000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMTctNC0xLTEtMjE3OTc0_195f7f49-44eb-4120-865c-50fbcd398966"
      unitRef="usd">408017000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjAtMi0xLTEtMjE3OTc0_20be31a2-8e95-4e13-8d68-b1912f539dff"
      unitRef="usd">2473000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjAtNC0xLTEtMjE3OTc0_c22077b3-de2c-4ef9-9c42-6ab33d22793a"
      unitRef="usd">1704000</us-gaap:AccountsPayableCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjEtMi0xLTEtMjE3OTc0_bd8a7629-9b0c-4685-8f56-ee9db07ca41b"
      unitRef="usd">34376000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjEtNC0xLTEtMjE3OTc0_1cf7c40d-3e84-407f-b90f-7f847c428101"
      unitRef="usd">30065000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjItMi0xLTEtMjE3OTc0_96ea2ebc-281c-4b6c-9c60-86eb8d3599fd"
      unitRef="usd">15601000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjItNC0xLTEtMjE3OTc0_9418ccc4-82c1-4726-bdd6-68b6d79d7ba7"
      unitRef="usd">13284000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:OtherLiabilitiesCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjUtMi0xLTEtMjE3OTc0_54b0b4b3-94ba-40b5-9e2e-c68ab4528909"
      unitRef="usd">8893000</us-gaap:OtherLiabilitiesCurrent>
    <us-gaap:OtherLiabilitiesCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjUtNC0xLTEtMjE3OTc0_3878ae1d-aa3e-4c17-b763-c34c4856ed10"
      unitRef="usd">7589000</us-gaap:OtherLiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjctMi0xLTEtMjE3OTc0_c89c7258-ad11-462d-9dc0-7c2b8e5e3f8b"
      unitRef="usd">61343000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjctNC0xLTEtMjE3OTc0_dc10832c-47e0-4d29-8249-5181d3142368"
      unitRef="usd">52642000</us-gaap:LiabilitiesCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjktMi0xLTEtMjE3OTc0_b0236a4f-eb2b-4619-8f54-9fc3b6442d56"
      unitRef="usd">50237000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMjktNC0xLTEtMjE3OTc0_3c07900f-284a-4288-a096-910c97edaef0"
      unitRef="usd">55733000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzMtMi0xLTEtMjE3OTc0_1bd8b936-9658-4975-9e04-62825d35b17f"
      unitRef="usd">4091000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzMtNC0xLTEtMjE3OTc0_c4262d22-2070-42c2-99c8-f5cf859762b3"
      unitRef="usd">2261000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzQtMi0xLTEtMjE3OTc0_f8fc7a79-24d2-40a8-b80b-25b22ecb316e"
      unitRef="usd">115671000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzQtNC0xLTEtMjE3OTc0_b2549b2a-be8f-4d68-8b98-bf0512b6022d"
      unitRef="usd">110636000</us-gaap:Liabilities>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzUtMi0xLTEtMjE3OTc0_4567820d-faca-4931-a825-3745047aa027"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzUtNC0xLTEtMjE3OTc0_03374bd6-1b42-4361-913c-02b32bb4c604"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzctMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ZWU1Y2E1MDU3MDllNDIxYzk5NDIwN2UxMmJjZDM1ZDJfMjE_2b358a0f-f1d8-47bd-bd60-4451a6c0cb56"
      unitRef="usdPerShare">0.0001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzctMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ZWU1Y2E1MDU3MDllNDIxYzk5NDIwN2UxMmJjZDM1ZDJfMjE_78b23875-d19a-415a-adaf-2f7bb79c4b68"
      unitRef="usdPerShare">0.0001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzctMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ZWU1Y2E1MDU3MDllNDIxYzk5NDIwN2UxMmJjZDM1ZDJfMzU_74744cd4-fd05-4a5c-9c0a-eb870e1cbc4c"
      unitRef="shares">25000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzctMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ZWU1Y2E1MDU3MDllNDIxYzk5NDIwN2UxMmJjZDM1ZDJfMzU_b1aa9fc3-069f-43f4-95a2-0d11b25334ef"
      unitRef="shares">25000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzctMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ZWU1Y2E1MDU3MDllNDIxYzk5NDIwN2UxMmJjZDM1ZDJfNjA_1bc5cf21-31d2-42ca-8f1f-36598dfe7ef2"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesIssued
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzctMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ZWU1Y2E1MDU3MDllNDIxYzk5NDIwN2UxMmJjZDM1ZDJfNjA_630a7bab-56bf-40da-a9f9-961bd3c95db4"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzctMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ZWU1Y2E1MDU3MDllNDIxYzk5NDIwN2UxMmJjZDM1ZDJfNjA_6ce58998-ee7f-453c-8c0b-b95f8695a93c"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzctMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ZWU1Y2E1MDU3MDllNDIxYzk5NDIwN2UxMmJjZDM1ZDJfNjA_c9e1ea17-ddf5-4d63-92a9-1956d33c8dc1"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockValue
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzctMi0xLTEtMjE3OTc0_fbc663f1-9dcc-4f2e-bd80-11db3c3b034f"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:PreferredStockValue
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzctNC0xLTEtMjE3OTc0_304b7111-e041-460f-86fa-70a024b52a45"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i24ee6eca4c0c4218954cff9dce4a7ca4_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzgtMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ODhmZmFiMDg0OGE5NDk5ZGJiYzk2NTkzZGI1MGRjOGVfMjY_2211a042-ef26-4b56-a8c6-6291c2e200b2"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i23b41d70d72d4c978f39a50cf813a80e_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzgtMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ODhmZmFiMDg0OGE5NDk5ZGJiYzk2NTkzZGI1MGRjOGVfMjY_b310d633-accb-4d1e-9b05-7309cd32c475"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i23b41d70d72d4c978f39a50cf813a80e_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzgtMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ODhmZmFiMDg0OGE5NDk5ZGJiYzk2NTkzZGI1MGRjOGVfNDA_2e79cd46-3a4d-41b1-bdfb-52a3670f045e"
      unitRef="shares">250000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i24ee6eca4c0c4218954cff9dce4a7ca4_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzgtMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ODhmZmFiMDg0OGE5NDk5ZGJiYzk2NTkzZGI1MGRjOGVfNDA_6b42d358-9132-4b9d-8a8f-28147b9257e9"
      unitRef="shares">250000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i24ee6eca4c0c4218954cff9dce4a7ca4_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzgtMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ODhmZmFiMDg0OGE5NDk5ZGJiYzk2NTkzZGI1MGRjOGVfNzg_666ea2c1-973c-43aa-991a-3dc2eec5ee3a"
      unitRef="shares">20988000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesIssued
      contextRef="i23b41d70d72d4c978f39a50cf813a80e_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzgtMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ODhmZmFiMDg0OGE5NDk5ZGJiYzk2NTkzZGI1MGRjOGVfODU_ee612df8-e313-4324-8969-3734919da908"
      unitRef="shares">19836000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i24ee6eca4c0c4218954cff9dce4a7ca4_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzgtMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ODhmZmFiMDg0OGE5NDk5ZGJiYzk2NTkzZGI1MGRjOGVfMTMz_71480959-877f-4846-becd-6ad8c88f1f6e"
      unitRef="shares">20569000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i23b41d70d72d4c978f39a50cf813a80e_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzgtMC0xLTEtMjE3OTc0L3RleHRyZWdpb246ODhmZmFiMDg0OGE5NDk5ZGJiYzk2NTkzZGI1MGRjOGVfMTQw_7962486c-6234-4b1d-b166-cab782ed2800"
      unitRef="shares">19417000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockValue
      contextRef="i24ee6eca4c0c4218954cff9dce4a7ca4_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzgtMi0xLTEtMjE3OTc0_66dc98dc-c864-4101-93d4-aa4b6f76d990"
      unitRef="usd">2000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i23b41d70d72d4c978f39a50cf813a80e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzgtNC0xLTEtMjE3OTc0_4a81ef06-11c4-438c-a79a-eb060d3598ea"
      unitRef="usd">2000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i56e9019ac2d8406aa79991d05ec1182c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzktMC0xLTEtMjE3OTc0L3RleHRyZWdpb246YTg2NjQ3NzIzZGEyNDQyYTlmZjQ4OTdiMzJmNTc0NmJfMjY_9d6d187f-274b-4422-bf78-e5f3ea775ad1"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i59c9cb8e17a34f57be75f129ff27f777_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzktMC0xLTEtMjE3OTc0L3RleHRyZWdpb246YTg2NjQ3NzIzZGEyNDQyYTlmZjQ4OTdiMzJmNTc0NmJfMjY_f57544e5-b74b-473e-a3df-dff6525913fd"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i59c9cb8e17a34f57be75f129ff27f777_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzktMC0xLTEtMjE3OTc0L3RleHRyZWdpb246YTg2NjQ3NzIzZGEyNDQyYTlmZjQ4OTdiMzJmNTc0NmJfNDA_18b51622-d7e9-4556-beef-ae2b85d450ea"
      unitRef="shares">50000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i56e9019ac2d8406aa79991d05ec1182c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzktMC0xLTEtMjE3OTc0L3RleHRyZWdpb246YTg2NjQ3NzIzZGEyNDQyYTlmZjQ4OTdiMzJmNTc0NmJfNDA_d3a95310-6da0-400a-8338-dd00db45317b"
      unitRef="shares">50000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i56e9019ac2d8406aa79991d05ec1182c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzktMC0xLTEtMjE3OTc0L3RleHRyZWdpb246YTg2NjQ3NzIzZGEyNDQyYTlmZjQ4OTdiMzJmNTc0NmJfNzg_5120ad23-7dcd-406f-881c-e474b459a0d9"
      unitRef="shares">14746000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i56e9019ac2d8406aa79991d05ec1182c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzktMC0xLTEtMjE3OTc0L3RleHRyZWdpb246YTg2NjQ3NzIzZGEyNDQyYTlmZjQ4OTdiMzJmNTc0NmJfNzg_d05249cc-7e06-4fe3-bae7-26ebe4e218df"
      unitRef="shares">14746000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i59c9cb8e17a34f57be75f129ff27f777_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzktMC0xLTEtMjE3OTc0L3RleHRyZWdpb246YTg2NjQ3NzIzZGEyNDQyYTlmZjQ4OTdiMzJmNTc0NmJfODU_bdedbbdc-ab12-4ba3-847b-a93147215de0"
      unitRef="shares">15408000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="i59c9cb8e17a34f57be75f129ff27f777_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzktMC0xLTEtMjE3OTc0L3RleHRyZWdpb246YTg2NjQ3NzIzZGEyNDQyYTlmZjQ4OTdiMzJmNTc0NmJfODU_d9b5a39c-28fc-42d7-912d-203222aafa36"
      unitRef="shares">15408000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockValue
      contextRef="i56e9019ac2d8406aa79991d05ec1182c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzktMi0xLTEtMjE3OTc0_4cb9ff9a-59d2-41f6-b9f1-74faa565d383"
      unitRef="usd">2000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i59c9cb8e17a34f57be75f129ff27f777_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfMzktNC0xLTEtMjE3OTc0_37298560-ba67-4f53-a289-561bfd8b41b8"
      unitRef="usd">2000</us-gaap:CommonStockValue>
    <us-gaap:AdditionalPaidInCapital
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDAtMi0xLTEtMjE3OTc0_ec0a13db-c6c0-4927-9e8d-716130ae69de"
      unitRef="usd">209704000</us-gaap:AdditionalPaidInCapital>
    <us-gaap:AdditionalPaidInCapital
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDAtNC0xLTEtMjE3OTc0_388d5789-80a6-417a-993d-e4503ca7f432"
      unitRef="usd">171930000</us-gaap:AdditionalPaidInCapital>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDEtMi0xLTEtMjE3OTc0_f84c4a0a-cb43-4228-a146-fda914f1583c"
      unitRef="usd">-1684000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDEtNC0xLTEtMjE3OTc0_25d8ba90-1c17-47b7-b203-55cbd2d7fff8"
      unitRef="usd">-194000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:TreasuryStockShares
      contextRef="i24ee6eca4c0c4218954cff9dce4a7ca4_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDItMC0xLTEtMjE3OTc0L3RleHRyZWdpb246NzBjODY5NTRiMTFjNDBjOGExODQ4ZjZjZDUwMTQ3MzRfMjk_4c469225-726e-41b2-9f35-51a264177c4f"
      unitRef="shares">419000</us-gaap:TreasuryStockShares>
    <us-gaap:TreasuryStockShares
      contextRef="i24ee6eca4c0c4218954cff9dce4a7ca4_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDItMC0xLTEtMjE3OTc0L3RleHRyZWdpb246NzBjODY5NTRiMTFjNDBjOGExODQ4ZjZjZDUwMTQ3MzRfMjk_bd7f1b35-b2d1-4f08-a556-7dbc2e33d901"
      unitRef="shares">419000</us-gaap:TreasuryStockShares>
    <us-gaap:TreasuryStockValue
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDItMi0xLTEtMjE3OTc0_f1d1f278-1d84-4316-8ecd-397c6bafd784"
      unitRef="usd">25756000</us-gaap:TreasuryStockValue>
    <us-gaap:TreasuryStockValue
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDItNC0xLTEtMjE3OTc0_c7b65d69-9300-4e02-a81b-345a0676e723"
      unitRef="usd">25756000</us-gaap:TreasuryStockValue>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDMtMi0xLTEtMjE3OTc0_4fd51b40-b9d0-41aa-aa97-a5fa96717294"
      unitRef="usd">83278000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDMtNC0xLTEtMjE3OTc0_3399d705-aecf-4c93-996b-d24ea184c320"
      unitRef="usd">151397000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:StockholdersEquity
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDQtMi0xLTEtMjE3OTc0_dcc0b656-b078-463f-a9f0-3c394349dd36"
      unitRef="usd">265546000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDQtNC0xLTEtMjE3OTc0_d9a214be-f6d6-4111-b6eb-54aa9285752b"
      unitRef="usd">297381000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDUtMi0xLTEtMjE3OTc0_1db21b45-120c-481f-95b4-bb00fb45da45"
      unitRef="usd">381217000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82MS9mcmFnOjg1NGRmMTNlYmE5NzQwZDk5YTk4NTFiY2RiOGVmYTg0L3RhYmxlOmYyOTU4OTk4ODI2OTRkMGM4YmU2OTMxMjI2MTM0NjAyL3RhYmxlcmFuZ2U6ZjI5NTg5OTg4MjY5NGQwYzhiZTY5MzEyMjYxMzQ2MDJfNDUtNC0xLTEtMjE3OTc0_0a0ac969-da91-4f1f-adef-3a34cb5d8e14"
      unitRef="usd">408017000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMi0xLTEtMS0yMTc5NzQ_bb0823a9-533c-41f7-b2a7-082bb0dddea4"
      unitRef="usd">471883000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMi0zLTEtMS0yMTc5NzQ_1ef74df6-cf3c-4023-962e-e450f01fec2e"
      unitRef="usd">359370000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMi01LTEtMS0yMTc5NzQ_0b35462e-86b6-493a-a23a-55422dae9277"
      unitRef="usd">310056000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC0xLTEtMS0yMTc5NzQ_aa049e6c-ff5d-4734-8592-07a6899a7fe3"
      unitRef="usd">191826000</us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization>
    <us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC0zLTEtMS0yMTc5NzQ_4ae1f2c1-077e-4e12-b534-354dfed01ec7"
      unitRef="usd">143944000</us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization>
    <us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC01LTEtMS0yMTc5NzQ_44d06417-c606-4a94-9643-14d387e93dc7"
      unitRef="usd">119029000</us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization>
    <us-gaap:SellingAndMarketingExpense
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS0xLTEtMS0yMTc5NzQ_f2b7b4ea-c6d1-495c-be6a-767a3be5c924"
      unitRef="usd">107398000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS0zLTEtMS0yMTc5NzQ_4be93e50-37c3-49aa-83ad-2ea2329e5008"
      unitRef="usd">73200000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS01LTEtMS0yMTc5NzQ_dceb9316-c228-474a-8f22-502b2efcb48a"
      unitRef="usd">58445000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi0xLTEtMS0yMTc5NzQ_7ece5d09-a985-41a9-9d5f-12ca304cbf13"
      unitRef="usd">111118000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi0zLTEtMS0yMTc5NzQ_4cd6c302-056a-48e1-b6e4-389016a5979a"
      unitRef="usd">65980000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi01LTEtMS0yMTc5NzQ_2c3bf749-12f5-470c-973f-f4b860308448"
      unitRef="usd">48529000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy0xLTEtMS0yMTc5NzQ_a94b8a85-ef73-4232-8723-b735f1e424d1"
      unitRef="usd">100792000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy0zLTEtMS0yMTc5NzQ_efab966c-3794-44fc-bd5a-d07761a5cd28"
      unitRef="usd">57279000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy01LTEtMS0yMTc5NzQ_75785655-8b9f-4ea3-ae98-adf0fce751f6"
      unitRef="usd">47480000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfOC0xLTEtMS0yMTc5NzQ_534bad16-ce2f-4cf8-955a-f4a7f15a4f04"
      unitRef="usd">33119000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfOC0zLTEtMS0yMTc5NzQ_eaa57297-49fc-46cb-8031-5f7dc3de3ce6"
      unitRef="usd">30845000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfOC01LTEtMS0yMTc5NzQ_42192155-0dd3-47f4-ab44-9db0e0cd3e90"
      unitRef="usd">26790000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:CostsAndExpenses
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfOS0xLTEtMS0yMTc5NzQ_120eb0c1-028d-40c1-86c3-aa0479939174"
      unitRef="usd">544253000</us-gaap:CostsAndExpenses>
    <us-gaap:CostsAndExpenses
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfOS0zLTEtMS0yMTc5NzQ_02ce0fcd-c4c4-47ea-b6d7-ebd2aa0a2545"
      unitRef="usd">371248000</us-gaap:CostsAndExpenses>
    <us-gaap:CostsAndExpenses
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfOS01LTEtMS0yMTc5NzQ_19a9f476-ceb2-4879-ba0e-6a1f0ae155fc"
      unitRef="usd">300273000</us-gaap:CostsAndExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTAtMS0xLTEtMjE3OTc0_6e31f1d9-f1bd-4111-8762-97253bd63991"
      unitRef="usd">-72370000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTAtMy0xLTEtMjE3OTc0_445d3089-2214-469a-b51a-b2d70a8a8eeb"
      unitRef="usd">-11878000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTAtNS0xLTEtMjE3OTc0_6b12e8b5-9aad-4abb-91d6-de7a89a02deb"
      unitRef="usd">9783000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTEtMS0xLTEtMjE3OTc0_a8d07c14-e624-4697-a5a8-d30732b82409"
      unitRef="usd">4469000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTEtMy0xLTEtMjE3OTc0_d6807e4a-1f43-4a8d-8aae-847988490825"
      unitRef="usd">13111000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTEtNS0xLTEtMjE3OTc0_37dce376-d003-4358-990a-55cb8714fabb"
      unitRef="usd">188897000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:InterestIncomeExpenseNet
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTItMS0xLTEtMjE3OTc0_32997b0b-a629-4101-aae0-39d1b912ceba"
      unitRef="usd">1184000</us-gaap:InterestIncomeExpenseNet>
    <us-gaap:InterestIncomeExpenseNet
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTItMy0xLTEtMjE3OTc0_208b0b20-eb43-441f-bb26-82fa34db4da9"
      unitRef="usd">501000</us-gaap:InterestIncomeExpenseNet>
    <us-gaap:InterestIncomeExpenseNet
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTItNS0xLTEtMjE3OTc0_4135fffc-7d3b-4ae4-9ce0-c6119736e315"
      unitRef="usd">-1849000</us-gaap:InterestIncomeExpenseNet>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTMtMS0xLTEtMjE3OTc0_081831ff-8e54-4d8c-816a-972e46664429"
      unitRef="usd">-66717000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTMtMy0xLTEtMjE3OTc0_2fd12b31-6417-4da4-8006-31edc47db9d4"
      unitRef="usd">1734000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTMtNS0xLTEtMjE3OTc0_0c03c62d-1da1-4be9-9fb5-68dbfd6b66ef"
      unitRef="usd">196831000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTQtMS0xLTEtMjE3OTc0_f6244699-3dce-4711-abc3-d2b388ac31e0"
      unitRef="usd">1402000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTQtMy0xLTEtMjE3OTc0_611739a5-dde8-4017-a3bc-5fec3107dbb9"
      unitRef="usd">706000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTQtNS0xLTEtMjE3OTc0_6f56c68e-a2d8-48db-bd55-af26a5f40981"
      unitRef="usd">38428000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTUtMS0xLTEtMjE3OTc0_4150cc85-218e-4f6f-991d-a15bc2713d61"
      unitRef="usd">-68119000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTUtMy0xLTEtMjE3OTc0_18d136ea-3c27-4ca0-b282-d458fe336444"
      unitRef="usd">1028000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTUtNS0xLTEtMjE3OTc0_a45b3ce3-daec-405b-bb5d-e6f6e38636da"
      unitRef="usd">158403000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTctMS0xLTEtMjE3OTc0_f2a2da73-1864-4d50-a185-f65061b3efee"
      unitRef="usdPerShare">-1.95</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTctMy0xLTEtMjE3OTc0_050a1371-de98-4aca-babf-daa30d7fcac9"
      unitRef="usdPerShare">0.03</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTctNS0xLTEtMjE3OTc0_8da5bd4f-758d-4a75-b0d9-2658720a4d9a"
      unitRef="usdPerShare">4.62</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTgtMS0xLTEtMjE3OTc0_e8b007d3-e4c1-4ecc-8af9-2b2e9bb295ae"
      unitRef="usdPerShare">-1.95</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTgtMy0xLTEtMjE3OTc0_6366de51-330c-443f-a21b-b298ece3af74"
      unitRef="usdPerShare">0.03</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMTgtNS0xLTEtMjE3OTc0_8b4529aa-0167-4c20-a6e5-910c491e149e"
      unitRef="usdPerShare">4.44</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMjAtMS0xLTEtMjE3OTc0_6a1466a3-8e9e-4e56-a6db-46841ae1f7c3"
      unitRef="shares">35010000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMjAtMy0xLTEtMjIwNDI4_a7622116-cc0d-458c-aebf-62da5c105245"
      unitRef="shares">34578000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMjAtNS0xLTEtMjE3OTc0_51b9e8e2-c5f4-4312-8812-62aa69351759"
      unitRef="shares">34264000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMjEtMS0xLTEtMjE3OTc0_8ef4a520-9243-431e-9500-88583f00eead"
      unitRef="shares">35010000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMjEtMy0xLTEtMjIwNDI4_60358cbc-8ed7-4b01-8cd6-1e0d4cba941e"
      unitRef="shares">35701000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfMjEtNS0xLTEtMjE3OTc0_36c8cc5c-950b-4f9f-b313-e13b5dc20488"
      unitRef="shares">35713000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ia735bb183e144879abd4ff7d4e12f395_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfMy0yLTEtMS0yMjM1NDE_6e00ceee-6af1-4db3-bb75-00c5d718728a"
      unitRef="usd">2640000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ibdc9f142666e489da579adbe7cba6a09_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfMy0yLTEtMS0yMjM0ODQ_32f69c8f-e470-4285-b17d-f6417c1dee3f"
      unitRef="usd">2024000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="id2de94e1428d45909dadaec3d7a96bd0_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfMy00LTEtMS0yMjM0ODQ_46f41052-25e8-4cdf-aa0b-71d38f400ef8"
      unitRef="usd">1506000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ib046f57c674c4065bcf069bd5ec92509_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNC0yLTEtMS0yMjM1NDE_f1fa1dcf-b6a2-41ad-9ba2-f955d067aaa5"
      unitRef="usd">8681000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ia9f84d3efe644002890e705a403c612d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNC0yLTEtMS0yMjM0ODQ_66919714-384a-4707-9bb3-c729d17afc5b"
      unitRef="usd">2329000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i7be16c094abd4be78b8207dbd5f64c4c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNC00LTEtMS0yMjM0ODQ_307c27b4-568f-48d0-bcaf-48a1f9ac046d"
      unitRef="usd">1415000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i14c8fcbfe03f4fe4b4035f1b6169c777_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNS0yLTEtMS0yMjM1NDE_e3ce9dc8-d5ce-480b-877f-b8b46ca03b80"
      unitRef="usd">16030000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ib32b4f06ae454f978288ad7c57573acc_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNS0yLTEtMS0yMjM0ODQ_4c4dcbb3-01c3-44d9-bc80-291cc1697aa1"
      unitRef="usd">5457000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic8e91d6ad72a4ed4ba9d71ea85f4f4b4_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNS00LTEtMS0yMjM0ODQ_c29848e8-43d4-49cc-b0e5-d2457e59b16c"
      unitRef="usd">1818000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="if0fb212911fd4df1a926c7f20bec59aa_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNi0yLTEtMS0yMjM1NDE_fd8e0d42-6908-40af-878f-2ee16d21ed89"
      unitRef="usd">13584000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i7927e257714740ed96c4337da600edb9_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNi0yLTEtMS0yMjM0ODQ_f93f9e8d-dba2-4634-a831-e43e226dc84b"
      unitRef="usd">5531000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ib180028f7f3945f89c581895daf45b16_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNi00LTEtMS0yMjM0ODQ_14d33352-9242-4ac9-917c-3ea51c98b37c"
      unitRef="usd">4286000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNy0yLTEtMS0yMjM1NDE_1c9392cd-6d45-4043-8117-350a3f4102c6"
      unitRef="usd">40935000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNy0yLTEtMS0yMjM0ODQ_196693fc-3322-4e12-bfde-1c7cc5528b04"
      unitRef="usd">15341000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjE3MmMxOTU2ZTQ4ODQ5YmU5NzViOWI3OWRhZDAxNjQzL3RhYmxlcmFuZ2U6MTcyYzE5NTZlNDg4NDliZTk3NWI5Yjc5ZGFkMDE2NDNfNy00LTEtMS0yMjM0ODQ_831f6545-7640-4470-b6e7-206de11047db"
      unitRef="usd">9025000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:NetIncomeLoss
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82Ny9mcmFnOjFmMjM0YjliYzNmNjQ2ZjBiNmUxNTUyZmFiNzMxZDJjL3RhYmxlOjdiNjc5MDI1ZGQ4NTQ2Y2U5NjM2MGZiNzFjMWFiM2MyL3RhYmxlcmFuZ2U6N2I2NzkwMjVkZDg1NDZjZTk2MzYwZmI3MWMxYWIzYzJfMi0xLTEtMS0yMTc5NzQ_4150cc85-218e-4f6f-991d-a15bc2713d61"
      unitRef="usd">-68119000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82Ny9mcmFnOjFmMjM0YjliYzNmNjQ2ZjBiNmUxNTUyZmFiNzMxZDJjL3RhYmxlOjdiNjc5MDI1ZGQ4NTQ2Y2U5NjM2MGZiNzFjMWFiM2MyL3RhYmxlcmFuZ2U6N2I2NzkwMjVkZDg1NDZjZTk2MzYwZmI3MWMxYWIzYzJfMi0zLTEtMS0yMTc5NzQ_18d136ea-3c27-4ca0-b282-d458fe336444"
      unitRef="usd">1028000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82Ny9mcmFnOjFmMjM0YjliYzNmNjQ2ZjBiNmUxNTUyZmFiNzMxZDJjL3RhYmxlOjdiNjc5MDI1ZGQ4NTQ2Y2U5NjM2MGZiNzFjMWFiM2MyL3RhYmxlcmFuZ2U6N2I2NzkwMjVkZDg1NDZjZTk2MzYwZmI3MWMxYWIzYzJfMi01LTEtMS0yMTc5NzQ_13f3e411-0423-4200-b8e0-5f854aa54d16"
      unitRef="usd">158403000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82Ny9mcmFnOjFmMjM0YjliYzNmNjQ2ZjBiNmUxNTUyZmFiNzMxZDJjL3RhYmxlOjdiNjc5MDI1ZGQ4NTQ2Y2U5NjM2MGZiNzFjMWFiM2MyL3RhYmxlcmFuZ2U6N2I2NzkwMjVkZDg1NDZjZTk2MzYwZmI3MWMxYWIzYzJfNC0xLTEtMS0yMTc5NzQ_c03c08a7-9a9f-4c0c-abdb-46e23e61175e"
      unitRef="usd">-1490000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82Ny9mcmFnOjFmMjM0YjliYzNmNjQ2ZjBiNmUxNTUyZmFiNzMxZDJjL3RhYmxlOjdiNjc5MDI1ZGQ4NTQ2Y2U5NjM2MGZiNzFjMWFiM2MyL3RhYmxlcmFuZ2U6N2I2NzkwMjVkZDg1NDZjZTk2MzYwZmI3MWMxYWIzYzJfNC0zLTEtMS0yMTc5NzQ_322fce6f-d6a9-484d-85a2-54606b03a370"
      unitRef="usd">-250000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82Ny9mcmFnOjFmMjM0YjliYzNmNjQ2ZjBiNmUxNTUyZmFiNzMxZDJjL3RhYmxlOjdiNjc5MDI1ZGQ4NTQ2Y2U5NjM2MGZiNzFjMWFiM2MyL3RhYmxlcmFuZ2U6N2I2NzkwMjVkZDg1NDZjZTk2MzYwZmI3MWMxYWIzYzJfNC01LTEtMS0yMTc5NzQ_ca2cbe31-34d2-487b-8a2f-440563b55b33"
      unitRef="usd">23000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82Ny9mcmFnOjFmMjM0YjliYzNmNjQ2ZjBiNmUxNTUyZmFiNzMxZDJjL3RhYmxlOjdiNjc5MDI1ZGQ4NTQ2Y2U5NjM2MGZiNzFjMWFiM2MyL3RhYmxlcmFuZ2U6N2I2NzkwMjVkZDg1NDZjZTk2MzYwZmI3MWMxYWIzYzJfNS0xLTEtMS0yMTc5NzQ_0ffef394-0735-46d6-8d54-9752c793b50d"
      unitRef="usd">-69609000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82Ny9mcmFnOjFmMjM0YjliYzNmNjQ2ZjBiNmUxNTUyZmFiNzMxZDJjL3RhYmxlOjdiNjc5MDI1ZGQ4NTQ2Y2U5NjM2MGZiNzFjMWFiM2MyL3RhYmxlcmFuZ2U6N2I2NzkwMjVkZDg1NDZjZTk2MzYwZmI3MWMxYWIzYzJfNS0zLTEtMS0yMTc5NzQ_83939957-7cfe-48dd-af9a-9b531c21cb97"
      unitRef="usd">778000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82Ny9mcmFnOjFmMjM0YjliYzNmNjQ2ZjBiNmUxNTUyZmFiNzMxZDJjL3RhYmxlOjdiNjc5MDI1ZGQ4NTQ2Y2U5NjM2MGZiNzFjMWFiM2MyL3RhYmxlcmFuZ2U6N2I2NzkwMjVkZDg1NDZjZTk2MzYwZmI3MWMxYWIzYzJfNS01LTEtMS0yMTc5NzQ_8fd09195-7158-4244-a93d-e37fc6d0fb55"
      unitRef="usd">158426000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i587e0d26d2354f2280b601388387d653_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNS02LTEtMS0yMTc5NzQ_053ece0b-de8f-44d4-a067-7b80cf6e2cbf"
      unitRef="shares">16552000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i587e0d26d2354f2280b601388387d653_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNS04LTEtMS0yMTc5NzQ_d771771d-2f31-48a3-ae9f-6360ce741479"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i0ac83b97894848dba4bbf5184d62359c_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNS0xMC0xLTEtMjE3OTc0_76deb80e-a69e-483a-bca3-fa08e782c360"
      unitRef="shares">17594000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i0ac83b97894848dba4bbf5184d62359c_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNS0xMi0xLTEtMjE3OTc0_9aa77540-5378-48cd-9fc4-0c913bc9c75c"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i776d871a06a54053b2c9466247a9d87a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNS0xNC0xLTEtMjE3OTc0_46998af5-be44-48f4-8e80-40a2e67a2447"
      unitRef="usd">161509000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i44b0d9ca225a46db8cccb297de88469d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNS0xNi0xLTEtMjE3OTc0_7a3e7029-8dbf-46a0-8517-001b4a2ad555"
      unitRef="usd">33000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ifbaf1beaa5014b8f8d6ca63692104b6c_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNS0xOC0xLTEtMjE3OTc0_cb2a1d3c-4efc-4c64-b7af-8fa88deb392f"
      unitRef="usd">-21562000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i2750226f20e7473fa9c211c414170274_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNS0yMC0xLTEtMjE3OTc0_e6c79de1-e48d-434a-b1f9-bcf955682dbd"
      unitRef="usd">-8034000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="id6e34c5cedfb495280df512e0d435d87_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNS0yMi0xLTEtMjE3OTc0_3eb5b12b-d329-462a-a748-5f8cdcad7028"
      unitRef="usd">131950000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="ieb24e4641dd5452da2d76abd1cd95cde_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNi02LTEtMS0yMTc5NzQ_3e1f2602-652d-4909-aa8d-46cc8eefdcac"
      unitRef="shares">106000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i6b120f0b671942ccb082cf0d8e0b620a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNi0xMC0xLTEtMjE3OTc0_dbcdf22b-327a-42e4-bfa4-31732055e65e"
      unitRef="shares">13000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i5b6ba71f116f4f588acb1fa18d6f6950_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNi0xNC0xLTEtMjE3OTc0_70b810af-641d-44d1-9327-cda76a832c29"
      unitRef="usd">822000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNi0yMi0xLTEtMjE3OTc0_49358a22-39a6-46e5-8faf-7f81f0fca6c7"
      unitRef="usd">822000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i5b6ba71f116f4f588acb1fa18d6f6950_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNy0xNC0xLTEtMjE3OTc0_fc89cb8c-5828-482d-86e9-8fd501a532b0"
      unitRef="usd">11112000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfNy0yMi0xLTEtMjE3OTc0_7dffc3d7-0a66-4f17-9ae7-0baad6996874"
      unitRef="usd">11112000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings
      contextRef="ieb24e4641dd5452da2d76abd1cd95cde_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfOC02LTEtMS0yMTc5NzQ_2b811578-3196-4451-aada-2cc9923bac8a"
      unitRef="shares">166000</appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="i5b6ba71f116f4f588acb1fa18d6f6950_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfOC0xNC0xLTEtMjE3OTc0_be339fa5-4698-405d-a813-b5bb8cc95376"
      unitRef="usd">-12196000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfOC0yMi0xLTEtMjE3OTc0_c2a18e4c-6313-4c31-b2ee-714cabfc6e94"
      unitRef="usd">-12196000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="ieb24e4641dd5452da2d76abd1cd95cde_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTAtNi0xLTEtMjE3OTc0_3fd73e47-6c48-4ce7-87bd-38a045de4a65"
      unitRef="shares">1948000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="i6b120f0b671942ccb082cf0d8e0b620a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTAtMTAtMS0xLTIxNzk3NA_63d1adc6-9b7d-48e1-9104-591abe0a9efa"
      unitRef="shares">-1948000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross
      contextRef="ieb24e4641dd5452da2d76abd1cd95cde_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTEtNi0xLTEtMjE3OTc0_82e990bc-e1f9-4e1f-b905-0a294ffc677f"
      unitRef="shares">5000</us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i4a7191f27e6c409e9aeb2bfa0d0f16c4_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTItMTYtMS0xLTIxNzk3NA_195f711c-e2ce-455a-ac67-c39247b2912e"
      unitRef="usd">23000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTItMjItMS0xLTIxNzk3NA_d088a8da-e0cd-427c-aaf9-e8ed646c3a99"
      unitRef="usd">23000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="ieb24e4641dd5452da2d76abd1cd95cde_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTMtNi0xLTEtMjE3OTc0_25edd49f-f284-4acb-a91c-cc98d534f1ce"
      unitRef="shares">48000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i4aa6e69674994dbf959b4253ee7da723_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTMtMTgtMS0xLTIxNzk3NA_b506373d-eda8-4f3d-9a60-da3693de524d"
      unitRef="usd">4194000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTMtMjItMS0xLTIxNzk3NA_925b7d30-5d33-4422-b680-ce7e146ecb2b"
      unitRef="usd">4194000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="i7245afa2ac9d4ac7b4226765e38694ef_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTQtMjAtMS0xLTIxNzk3NA_eabc7404-d4ab-4014-baa0-d192617e1937"
      unitRef="usd">158403000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTQtMjItMS0xLTIxNzk3NA_b7c81046-ed5a-4d64-8078-8d366c8cb6fe"
      unitRef="usd">158403000</us-gaap:NetIncomeLoss>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="icb5758be40394a56a66ce331e55d6a69_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTUtNi0xLTEtMjE3OTc0_de671d04-01c3-474b-9f1c-7dc287e39dfd"
      unitRef="shares">18729000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="icb5758be40394a56a66ce331e55d6a69_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTUtOC0xLTEtMjE3OTc0_9a05cae9-2c2d-4893-8a1a-94495d1a3e1a"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i9a19e5fcc01447b38977aaa2fc3d0673_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTUtMTAtMS0xLTIxNzk3NA_01ea1810-620f-4f1e-84cd-721fbc9ea380"
      unitRef="shares">15659000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i9a19e5fcc01447b38977aaa2fc3d0673_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTUtMTItMS0xLTIxNzk3NA_38b486ef-d954-447c-9a40-30688d5a0a76"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i4731118295a445578b01bd7c9f7f9549_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTUtMTQtMS0xLTIxNzk3NA_f9933cec-a8c8-40b7-96bc-99f40a7c93a3"
      unitRef="usd">161247000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="id7546c1c4bee44058d6c08652727724b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTUtMTYtMS0xLTIxNzk3NA_8f3d17d1-65b6-4ece-b204-bc77949fcb3a"
      unitRef="usd">56000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ia66a1b09748f4f99b6005cfb78bfd998_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTUtMTgtMS0xLTIxNzk3NA_a29f7dcf-567c-43c9-bd48-d8072dc61f1c"
      unitRef="usd">-25756000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7180ec38d0784b25ad3595047950435b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTUtMjAtMS0xLTIxNzk3NA_edb30238-a7cf-4e9d-b7aa-8858abcbcf1c"
      unitRef="usd">150369000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTUtMjItMS0xLTIxNzk3NA_6069dbd5-9776-422a-bade-1847f01beff1"
      unitRef="usd">285920000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i1acdec4ac7294ef68ce79b20f48da1b6_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTYtNi0xLTEtMjE3OTc0_50afc160-6ff5-46df-a47d-fe805dd2b8d9"
      unitRef="shares">238000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="idd59834810c84b1790a47b26e0928ae1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTYtMTAtMS0xLTIxNzk3NA_87d98806-8778-402c-9614-04b45ab72ca6"
      unitRef="shares">84000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i666dc262db714243b7ae16105866e6c3_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTYtMTQtMS0xLTIxNzk3NA_e7d2f8d7-b314-440b-8007-f37f4266c46f"
      unitRef="usd">2614000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTYtMjItMS0xLTIxNzk3NA_033f3282-3707-4fe1-85a1-2d4cb447e983"
      unitRef="usd">2614000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i666dc262db714243b7ae16105866e6c3_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTctMTQtMS0xLTIxNzk3NA_faefcee6-62f1-4e7a-a172-0dfc498c1cbf"
      unitRef="usd">18031000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTctMjItMS0xLTIxNzk3NA_134aeddd-df48-49da-a19f-8f8af1e8030c"
      unitRef="usd">18031000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings
      contextRef="i1acdec4ac7294ef68ce79b20f48da1b6_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTgtNi0xLTEtMjE3OTc0_bbfc639b-aa85-41a6-a977-a541d66a7467"
      unitRef="shares">111000</appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="i666dc262db714243b7ae16105866e6c3_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTgtMTQtMS0xLTIxNzk3NA_2a2eb351-acc5-4c87-8d09-061eef083ca8"
      unitRef="usd">-9962000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMTgtMjItMS0xLTIxNzk3NA_e88984cf-1616-4748-a7ac-11d80cf0ac46"
      unitRef="usd">-9962000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="i1acdec4ac7294ef68ce79b20f48da1b6_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjAtNi0xLTEtMjE3OTc0_c95182f5-06b5-4c3f-bdb3-01d13f3301db"
      unitRef="shares">335000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="idd59834810c84b1790a47b26e0928ae1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjAtMTAtMS0xLTIxNzk3NA_410dea5a-b9b6-4408-9f26-2e7fbc37396b"
      unitRef="shares">-335000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross
      contextRef="i1acdec4ac7294ef68ce79b20f48da1b6_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjEtNi0xLTEtMjE3OTc0_4bda79e6-0ba1-4b54-9a6a-251205f90b3e"
      unitRef="shares">4000</us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i1edb8ba9212d4406b183d6fc0adde073_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjItMTYtMS0xLTIxNzk3NA_6ba9c05b-daef-4bcb-87ca-a9976bf595e7"
      unitRef="usd">-250000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjItMjItMS0xLTIxNzk3NA_b596bb2a-5887-4953-8c4c-53655308a8f1"
      unitRef="usd">-250000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:NetIncomeLoss
      contextRef="icd31c189c1694b3c95866b469bfe3f19_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjQtMjAtMS0xLTIxNzk3NA_409116d3-590d-494a-b3bb-4a21d106c1e7"
      unitRef="usd">1028000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjQtMjItMS0xLTIxNzk3NA_05312508-8724-49dc-80f8-6749435fc961"
      unitRef="usd">1028000</us-gaap:NetIncomeLoss>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i1d383d40f5f345e0a7112df121dab924_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjUtNi0xLTEtMjE3OTc0_4a558805-595d-48eb-b562-dfd4861eea83"
      unitRef="shares">19417000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i1d383d40f5f345e0a7112df121dab924_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjUtOC0xLTEtMjE3OTc0_6c470160-8362-4ea9-a3d1-3279342e1708"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i6cc8692c404643778776a19b2e4cded2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjUtMTAtMS0xLTIxNzk3NA_d570911b-be1e-42f8-afa5-4f7f05e74119"
      unitRef="shares">15408000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i6cc8692c404643778776a19b2e4cded2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjUtMTItMS0xLTIxNzk3NA_60adb075-aed5-474f-a951-91755eac683d"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i0c54fcf15e534197a318414c0b34ff3b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjUtMTQtMS0xLTIxNzk3NA_a36afbcf-1756-4739-9249-7846c1557220"
      unitRef="usd">171930000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ifb93b53b409b41c993b33d081e13a11a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjUtMTYtMS0xLTIxNzk3NA_1ab302a7-6a18-4aa9-9b08-92336921b911"
      unitRef="usd">-194000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i2fbf73727b074e01a76a87558a977881_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjUtMTgtMS0xLTIxNzk3NA_4dd4e1a1-b775-4a77-8c7a-8fd65e032e96"
      unitRef="usd">-25756000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i77721e150e024e2190d45e2ceeddb2bc_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjUtMjAtMS0xLTIxNzk3NA_4c812707-407d-4685-b216-1c74edfc6a19"
      unitRef="usd">151397000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjUtMjItMS0xLTIxNzk3NA_884d3623-593b-4b89-808f-ecf36229dfa3"
      unitRef="usd">297381000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i7d4b492341314d63892874b97c4ed547_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjYtNi0xLTEtMjE3OTc0_dfda7f3c-9941-4fca-b2b4-1610853559b5"
      unitRef="shares">303000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i9c3e5ae02ac149be90f95f73c3ccd707_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjYtMTAtMS0xLTIxNzk3NA_7b7ec278-ad3b-4a90-b11b-b5ee75175aba"
      unitRef="shares">27000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i20e743e1aa2b489e9ebec344939512f8_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjYtMTQtMS0xLTIxNzk3NA_8986953e-d69d-4aaa-a7f8-d1da47ceaa85"
      unitRef="usd">4474000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjYtMjItMS0xLTIxNzk3NA_2b3a53d5-e914-46de-8e3a-86463804f5f8"
      unitRef="usd">4474000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i20e743e1aa2b489e9ebec344939512f8_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjctMTQtMS0xLTIxNzk3NA_c41040dc-1cb2-4370-a8dd-bf44196b8896"
      unitRef="usd">43937000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjctMjItMS0xLTIxNzk3NA_84fc4fa4-b649-43b2-992a-b113a1a8ef11"
      unitRef="usd">43937000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings
      contextRef="i7d4b492341314d63892874b97c4ed547_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjgtNi0xLTEtMjE3OTc0_d80d7e47-2880-4db7-bd15-70cb17afd43b"
      unitRef="shares">154000</appf:RestrictedStockUnitsSharesIssuedNetOfSharesForTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="i20e743e1aa2b489e9ebec344939512f8_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjgtMTQtMS0xLTIxNzk3NA_841beec5-b4e0-49af-977f-dbf5c90ec08d"
      unitRef="usd">-10637000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMjgtMjItMS0xLTIxNzk3NA_f810053f-cfbd-4a49-9880-91d7afadee5b"
      unitRef="usd">-10637000</appf:RestrictedStockUnitsValueSharesIssuedNetOfTaxWithholdings>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="i7d4b492341314d63892874b97c4ed547_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzAtNi0xLTEtMjE3OTc0_5adb0d75-d8f4-4307-805f-22cb505f8bbf"
      unitRef="shares">689000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:ConversionOfStockSharesConverted1
      contextRef="i9c3e5ae02ac149be90f95f73c3ccd707_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzAtMTAtMS0xLTIxNzk3NA_0d3a84ab-3278-4be9-90de-0c3833459d37"
      unitRef="shares">-689000</us-gaap:ConversionOfStockSharesConverted1>
    <us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross
      contextRef="i7d4b492341314d63892874b97c4ed547_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzEtNi0xLTEtMjE3OTc0_0f8d91b1-232d-407d-8db7-a563f0aaee58"
      unitRef="shares">6000</us-gaap:StockIssuedDuringPeriodSharesRestrictedStockAwardGross>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ief9c773e877a45f9b6758e3fb934ef47_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzItMTYtMS0xLTIxNzk3NA_415dc76f-573b-4ee6-85fd-436f38d82629"
      unitRef="usd">-1490000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzItMjItMS0xLTIxNzk3NA_023b61b0-101b-4061-a324-dbedc0f2fe78"
      unitRef="usd">-1490000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:NetIncomeLoss
      contextRef="i4eebf946cf6a4c5eaa19ff54d12be884_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzQtMjAtMS0xLTIxNzk3NA_ba7356e7-bd73-4e9a-81bf-3be8f2cb7d52"
      unitRef="usd">-68119000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzQtMjItMS0xLTIxNzk3NA_6d92b09d-8b1f-4317-af03-3d096404ba12"
      unitRef="usd">-68119000</us-gaap:NetIncomeLoss>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="id9874a7ad3ce4ea0aae0b53e453e2baf_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzUtNi0xLTEtMjE3OTc0_bb004342-d5bc-4083-9d88-cb2bddc11941"
      unitRef="shares">20569000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="id9874a7ad3ce4ea0aae0b53e453e2baf_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzUtOC0xLTEtMjE3OTc0_8bdbc8a9-7e20-401b-af38-4be266523c05"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ib7713d27c2d445be88201ff37ab57ebf_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzUtMTAtMS0xLTIxNzk3NA_e28cdfd2-d0d6-4b6f-9af2-be6ad67a2369"
      unitRef="shares">14746000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="ib7713d27c2d445be88201ff37ab57ebf_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzUtMTItMS0xLTIxNzk3NA_e16dfc54-7ec7-47f8-80a2-57c2cc7de06f"
      unitRef="usd">2000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i0e106da795754b6a946df49fe3ccd330_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzUtMTQtMS0xLTIxNzk3NA_ce1b359b-a8f9-486e-af95-205b6d8a6366"
      unitRef="usd">209704000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ida05ec3a6b2649f2a445d77a8e8f2ace_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzUtMTYtMS0xLTIxNzk3NA_605c7e1e-541f-4fd2-b879-c503d70cd82f"
      unitRef="usd">-1684000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i5b3ecd7813f04ee1b51a02b4f14d29da_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzUtMTgtMS0xLTIxNzk3NA_752b1fa0-7612-485b-b50c-bdf738cd67e9"
      unitRef="usd">-25756000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i50200a188dc848be98a094e44ee1cb63_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzUtMjAtMS0xLTIxNzk3NA_1b45b97e-dcbd-4191-84b4-5420fc336fda"
      unitRef="usd">83278000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83MC9mcmFnOjdiYzVjMTJmNWYzMTQwOGNiZWY0OTc4YTlhMWI1ZTA5L3RhYmxlOjkyZGI2ZTRkMzA1ZDRiYzhiYzdlOTE4YjBjODc5MDEwL3RhYmxlcmFuZ2U6OTJkYjZlNGQzMDVkNGJjOGJjN2U5MThiMGM4NzkwMTBfMzUtMjItMS0xLTIxNzk3NA_12c5298a-f6aa-4642-b803-78181e8bdc53"
      unitRef="usd">265546000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMy0xLTEtMS0yMTc5NzQ_a2c92aea-b1a3-4fd7-a500-c97b2230620c"
      unitRef="usd">-68119000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMy0zLTEtMS0yMTc5NzQ_fbcf50b6-0da9-4b89-ad7b-7fe917814d4e"
      unitRef="usd">1028000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMy01LTEtMS0yMTc5NzQ_b2d888f7-2bb5-48ea-81e6-41c9f07fb894"
      unitRef="usd">158403000</us-gaap:NetIncomeLoss>
    <appf:DepreciationDepletionAndAmortizationExcludingAmortizationOfFinancingCosts
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNS0xLTEtMS0yMTc5NzQ_40674f59-ab38-4b19-b673-538bab5ca477"
      unitRef="usd">30820000</appf:DepreciationDepletionAndAmortizationExcludingAmortizationOfFinancingCosts>
    <appf:DepreciationDepletionAndAmortizationExcludingAmortizationOfFinancingCosts
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNS0zLTEtMS0yMTc5NzQ_09577aa4-f1d2-47e9-8b1b-90ca486df217"
      unitRef="usd">29032000</appf:DepreciationDepletionAndAmortizationExcludingAmortizationOfFinancingCosts>
    <appf:DepreciationDepletionAndAmortizationExcludingAmortizationOfFinancingCosts
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNS01LTEtMS0yMTc5NzQ_a5cf557f-240b-44fe-92b7-f8489cf88e4f"
      unitRef="usd">25507000</appf:DepreciationDepletionAndAmortizationExcludingAmortizationOfFinancingCosts>
    <us-gaap:OperatingLeaseRightOfUseAssetAmortizationExpense
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNi0xLTEtMS0yMTc5NzQ_fe525ea3-cf38-4a51-b11e-fe6a9739feb8"
      unitRef="usd">3187000</us-gaap:OperatingLeaseRightOfUseAssetAmortizationExpense>
    <us-gaap:OperatingLeaseRightOfUseAssetAmortizationExpense
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNi0zLTEtMS0yMTc5NzQ_9a1c57f7-ae43-48f1-b496-8642e2fa0793"
      unitRef="usd">3199000</us-gaap:OperatingLeaseRightOfUseAssetAmortizationExpense>
    <us-gaap:OperatingLeaseRightOfUseAssetAmortizationExpense
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNi01LTEtMS0yMTc5NzQ_a21f5dab-34bf-40d2-badb-a24a87a0ee3e"
      unitRef="usd">3701000</us-gaap:OperatingLeaseRightOfUseAssetAmortizationExpense>
    <us-gaap:AssetImpairmentCharges
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNy0xLTEtMS0yMjQwMjc_62879e41-5eda-4e8d-b3db-2ca402906e52"
      unitRef="usd">22022000</us-gaap:AssetImpairmentCharges>
    <us-gaap:AssetImpairmentCharges
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNy0zLTEtMS0yMjQwMzE_aa3d26d0-fb6f-49ff-bc00-5d2826481483"
      unitRef="usd">0</us-gaap:AssetImpairmentCharges>
    <us-gaap:AssetImpairmentCharges
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNy01LTEtMS0yMjQwMzU_14cb1f36-a98f-4041-89c9-e850874bb033"
      unitRef="usd">0</us-gaap:AssetImpairmentCharges>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNy0xLTEtMS0yMTc5NzQ_800c4d14-43dd-4b4e-bbea-846e70545f02"
      unitRef="usd">-993000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNy0zLTEtMS0yMTc5NzQ_b0cc754d-2af4-4ac1-b4b7-a1cd6c9b6f1a"
      unitRef="usd">250000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNy01LTEtMS0yMTc5NzQ_22093dcd-267d-46ba-adf6-ebe47970eacd"
      unitRef="usd">29002000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:ShareBasedCompensation
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfOC0xLTEtMS0yMTc5NzQ_e3b88567-0c98-4024-b64b-38d3e7d2de13"
      unitRef="usd">43234000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfOC0zLTEtMS0yMTc5NzQ_db02bad8-d68f-4264-9876-51d3356fa65e"
      unitRef="usd">17154000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfOC01LTEtMS0yMTc5NzQ_e5bd579b-4196-403b-8346-0840bbffdcbf"
      unitRef="usd">10308000</us-gaap:ShareBasedCompensation>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfOS0xLTEtMS0yMTc5NzQ_edca77d1-d2bf-47b2-87c9-4b7f5b738d91"
      unitRef="usd">4156000</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfOS0zLTEtMS0yMTc5NzQ_3ad6ddb4-508d-4ffb-af65-afbd5ab13018"
      unitRef="usd">380000</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfOS01LTEtMS0yMTc5NzQ_e7d8bc62-dea2-411f-8391-82de5b16eeda"
      unitRef="usd">187658000</us-gaap:GainLossOnSaleOfBusiness>
    <appf:EquityMethodInvestmentRealizedGainLossOnDisposalAndGainFromRecoveryOfNoteReceivable
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTAtMS0xLTEtMjIxNDY0_85529e2c-0a8b-409a-8ee5-e099ed70aef5"
      unitRef="usd">40000</appf:EquityMethodInvestmentRealizedGainLossOnDisposalAndGainFromRecoveryOfNoteReceivable>
    <appf:EquityMethodInvestmentRealizedGainLossOnDisposalAndGainFromRecoveryOfNoteReceivable
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTAtMy0xLTEtMjIxNDY0_d8ca3b18-dc51-475a-83d4-aa4d44ea75ef"
      unitRef="usd">12767000</appf:EquityMethodInvestmentRealizedGainLossOnDisposalAndGainFromRecoveryOfNoteReceivable>
    <appf:EquityMethodInvestmentRealizedGainLossOnDisposalAndGainFromRecoveryOfNoteReceivable
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTAtNS0xLTEtMjIxNDY0_4e9e8c7d-e675-45aa-91c2-16233d5a07cf"
      unitRef="usd">0</appf:EquityMethodInvestmentRealizedGainLossOnDisposalAndGainFromRecoveryOfNoteReceivable>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTEtMS0xLTEtMjE3OTc0_8cc4c38b-d1dd-4578-ab33-bdb60364974d"
      unitRef="usd">-175000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTEtMy0xLTEtMjE3OTc0_fa8fa367-d3f3-4511-ab96-d37a3f0f215b"
      unitRef="usd">-249000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTEtNS0xLTEtMjE3OTc0_421ecd3b-f377-4b9c-ad1b-addc9e8adfae"
      unitRef="usd">-125000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTMtMS0xLTEtMjE3OTc0_c7abebbc-a1c0-440c-8bb0-d93afa16c8bd"
      unitRef="usd">4198000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTMtMy0xLTEtMjE3OTc0_14ba18d9-91dd-43aa-beba-c024932ee6e5"
      unitRef="usd">2103000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTMtNS0xLTEtMjE3OTc0_b5dc2e4e-676f-4a74-aeff-45fbf4a069e9"
      unitRef="usd">2782000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTQtMS0xLTEtMjE3OTc0_5fb55360-0d3d-4c54-a3fc-ca801691ae76"
      unitRef="usd">5398000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTQtMy0xLTEtMjE3OTc0_0b78949a-16bb-4692-9243-e19600cd9525"
      unitRef="usd">2168000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTQtNS0xLTEtMjE3OTc0_e85150c4-9cd6-47d4-b307-3cc7bbe66d1c"
      unitRef="usd">5894000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInOtherOperatingAssets
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTUtMS0xLTEtMjE3OTc0_2ae83769-3552-49a8-9505-da1bcd6ef065"
      unitRef="usd">1883000</us-gaap:IncreaseDecreaseInOtherOperatingAssets>
    <us-gaap:IncreaseDecreaseInOtherOperatingAssets
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTUtMy0xLTEtMjE3OTc0_055aa359-f115-4598-9e25-9a3972a7d631"
      unitRef="usd">1259000</us-gaap:IncreaseDecreaseInOtherOperatingAssets>
    <us-gaap:IncreaseDecreaseInOtherOperatingAssets
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTUtNS0xLTEtMjE3OTc0_6940fccd-b5f7-4b9e-938c-4aac3946dc4c"
      unitRef="usd">519000</us-gaap:IncreaseDecreaseInOtherOperatingAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTYtMS0xLTEtMjE3OTc0_43504200-842e-4656-918b-a0c1ac5a6a7e"
      unitRef="usd">1176000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTYtMy0xLTEtMjE3OTc0_96194935-e55f-429d-af1b-4df88ffecfd1"
      unitRef="usd">497000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTYtNS0xLTEtMjE3OTc0_e0c2492f-c236-4d9c-b847-ca34bab3617c"
      unitRef="usd">-903000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTctMS0xLTEtMjE3OTc0_785c148c-8f0d-4bae-8366-e4692e0d6836"
      unitRef="usd">4281000</us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities>
    <us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTctMy0xLTEtMjE3OTc0_33913c98-6f9b-47ad-87dc-a5ca424a37d2"
      unitRef="usd">11264000</us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities>
    <us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTctNS0xLTEtMjE3OTc0_4ffa27c3-a854-42fc-85ae-bbe368f9c0a0"
      unitRef="usd">2799000</us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities>
    <us-gaap:IncreaseDecreaseInOtherAccruedLiabilities
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTgtMS0xLTEtMjE3OTc0_1171d307-51e5-4115-b65b-34460347e90b"
      unitRef="usd">3452000</us-gaap:IncreaseDecreaseInOtherAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInOtherAccruedLiabilities
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTgtMy0xLTEtMjE3OTc0_94b4e99b-f211-4fd8-b656-f10eaa66622e"
      unitRef="usd">-1773000</us-gaap:IncreaseDecreaseInOtherAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInOtherAccruedLiabilities
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMTgtNS0xLTEtMjE3OTc0_1b96e2fd-7eb6-4d30-8400-eaed771d9d19"
      unitRef="usd">6878000</us-gaap:IncreaseDecreaseInOtherAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInOperatingLeaseLiability
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjItMS0xLTEtMjE3OTc0_4b1988be-2929-4693-97b6-4adfe3cb9c38"
      unitRef="usd">-2524000</us-gaap:IncreaseDecreaseInOperatingLeaseLiability>
    <us-gaap:IncreaseDecreaseInOperatingLeaseLiability
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjItMy0xLTEtMjE3OTc0_7df4a996-4bd8-46e2-8f74-dfa5cba7dfc4"
      unitRef="usd">1268000</us-gaap:IncreaseDecreaseInOperatingLeaseLiability>
    <us-gaap:IncreaseDecreaseInOperatingLeaseLiability
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjItNS0xLTEtMjE3OTc0_6b9ec9e3-4a64-44f7-a7c4-3664855c3e8d"
      unitRef="usd">-564000</us-gaap:IncreaseDecreaseInOperatingLeaseLiability>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjMtMS0xLTEtMjE3OTc0_4701a894-8c86-48d9-8d49-993e5f0aeddb"
      unitRef="usd">4329000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjMtMy0xLTEtMjE3OTc0_0f0af070-e2c3-4bfa-9976-4f5c8318694b"
      unitRef="usd">-8100000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjMtNS0xLTEtMjE3OTc0_4633adff-302d-46fc-910b-51a641d1ea02"
      unitRef="usd">9896000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjQtMS0xLTEtMjE3OTc0_b44b8caa-8306-451b-a2cc-3d24571dd002"
      unitRef="usd">25365000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjQtMy0xLTEtMjE3OTc0_5c127e97-deaf-42d4-a292-e5e4939acdfb"
      unitRef="usd">35391000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjQtNS0xLTEtMjE3OTc0_80fa19fb-59ef-4123-a718-6db4c2df9661"
      unitRef="usd">48299000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjYtMS0xLTEtMjE3OTc0_a1e5457d-71f9-4036-959b-751a3db76404"
      unitRef="usd">79279000</us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt>
    <us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjYtMy0xLTEtMjE3OTc0_21d2de03-d065-4485-9aaf-e0c05f5a3774"
      unitRef="usd">241215000</us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt>
    <us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjYtNS0xLTEtMjE3OTc0_c3cac0ae-7389-4cb6-b1f2-9b94e36f0992"
      unitRef="usd">43877000</us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjctMS0xLTEtMjE3OTc0_8dd3c1f1-3e05-49ee-a785-2534191596db"
      unitRef="usd">994000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjctMy0xLTEtMjE3OTc0_0a95d0dd-8a07-43af-b451-d6b4b9dc5497"
      unitRef="usd">43198000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjctNS0xLTEtMjE3OTc0_79865c10-b6e4-4fdd-be42-5c82224d109c"
      unitRef="usd">16711000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjgtMS0xLTEtMjE3OTc0_d6a5ed24-ea54-412a-999c-50d09c16b2f2"
      unitRef="usd">87883000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjgtMy0xLTEtMjE3OTc0_b260b7d4-be27-4aab-b2b6-6708cd602e4e"
      unitRef="usd">107354000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjgtNS0xLTEtMjE3OTc0_dbe10ae4-ad6d-4e3c-9396-36f084086ce7"
      unitRef="usd">27330000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjktMS0xLTEtMjE3OTc0_e8b67f2c-496c-4f04-bac3-861dac5e9161"
      unitRef="usd">6540000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjktMy0xLTEtMjE3OTc0_46c9e042-1337-4c48-be60-5b2124156077"
      unitRef="usd">8103000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMjktNS0xLTEtMjE3OTc0_2066877f-5013-4bbd-ae9e-5ad3f97bb14e"
      unitRef="usd">19038000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToDevelopSoftware
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzAtMS0xLTEtMjE3OTc0_86a486fa-7445-4a1b-b2c8-bf3ce34ab5d4"
      unitRef="usd">14688000</us-gaap:PaymentsToDevelopSoftware>
    <us-gaap:PaymentsToDevelopSoftware
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzAtMy0xLTEtMjE3OTc0_029f02e1-e3be-44bd-939b-fe4d11c63de1"
      unitRef="usd">24615000</us-gaap:PaymentsToDevelopSoftware>
    <us-gaap:PaymentsToDevelopSoftware
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzAtNS0xLTEtMjE3OTc0_e169f346-f2b5-4483-ac76-1032e944e773"
      unitRef="usd">26042000</us-gaap:PaymentsToDevelopSoftware>
    <us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzItMS0xLTEtMjE3OTc0_ec54b016-7554-45f3-a265-dc4b84ca3766"
      unitRef="usd">5124000</us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested>
    <us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzItMy0xLTEtMjE3OTc0_a3e85aa7-74cb-4e1d-8afb-d6dc21565e3f"
      unitRef="usd">402000</us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested>
    <us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzItNS0xLTEtMjE3OTc0_212992ef-b2af-404a-9942-8a5ef4d4262b"
      unitRef="usd">191427000</us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested>
    <us-gaap:ProceedsFromSaleOfEquityMethodInvestments
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzMtMS0xLTEtMjE3OTc0_29a83f68-9dad-4f6e-b9c0-fbda5015515f"
      unitRef="usd">40000</us-gaap:ProceedsFromSaleOfEquityMethodInvestments>
    <us-gaap:ProceedsFromSaleOfEquityMethodInvestments
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzMtMy0xLTEtMjE3OTc0_f4d7cb78-20ff-458d-bb61-bf88199e2097"
      unitRef="usd">12520000</us-gaap:ProceedsFromSaleOfEquityMethodInvestments>
    <us-gaap:ProceedsFromSaleOfEquityMethodInvestments
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzMtNS0xLTEtMjE3OTc0_6fc65994-1204-41d6-ae76-a2a230ea2af1"
      unitRef="usd">0</us-gaap:ProceedsFromSaleOfEquityMethodInvestments>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzUtMS0xLTEtMjE3OTc0_7c86a0bd-b9f6-4af7-b406-9b9b160bf267"
      unitRef="usd">-6466000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzUtMy0xLTEtMjE3OTc0_b5893b56-77b5-4816-b63c-88a39e15504a"
      unitRef="usd">-110459000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzUtNS0xLTEtMjE3OTc0_3acc4f60-404a-4a9c-aba7-fbc86cb7a772"
      unitRef="usd">146511000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzctMS0xLTEtMjE3OTc0_faa41cc3-7e9d-435e-9844-19e25ef356ec"
      unitRef="usd">4474000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzctMy0xLTEtMjE3OTc0_73ec6dd0-6dc2-4f5e-9dc6-ecec32901baa"
      unitRef="usd">2614000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfMzctNS0xLTEtMjE3OTc0_ae29cafd-3661-4937-9265-d194ce9efc1a"
      unitRef="usd">822000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDAtMS0xLTEtMjE3OTc0_8faecfc2-2ab5-4934-8be4-fa5e81859309"
      unitRef="usd">10637000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDAtMy0xLTEtMjE3OTc0_8d296059-5615-45bb-ad28-8be29d105918"
      unitRef="usd">9962000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDAtNS0xLTEtMjE3OTc0_31e1f978-1562-4598-b0c2-332b754cef25"
      unitRef="usd">12196000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDEtMS0xLTEtMjE3OTc0_daef11c5-9c93-4d3b-bf6f-1c927090479d"
      unitRef="usd">0</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDEtMy0xLTEtMjE3OTc0_d0c9562d-287b-4d48-b992-859307b33959"
      unitRef="usd">0</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDEtNS0xLTEtMjE3OTc0_41526ab3-2d68-48cc-a02f-dbbee27a997f"
      unitRef="usd">5977000</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:ProceedsFromIssuanceOfSecuredDebt
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDItMS0xLTEtMjE3OTc0_1ffb5fcf-486e-4456-96c0-5527682163a7"
      unitRef="usd">0</us-gaap:ProceedsFromIssuanceOfSecuredDebt>
    <us-gaap:ProceedsFromIssuanceOfSecuredDebt
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDItMy0xLTEtMjE3OTc0_b3f5aef8-51ed-4b3d-bd5f-09f99b43ca5b"
      unitRef="usd">0</us-gaap:ProceedsFromIssuanceOfSecuredDebt>
    <us-gaap:ProceedsFromIssuanceOfSecuredDebt
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDItNS0xLTEtMjE3OTc0_1e1a3c4e-8196-440f-95a5-c45c78f923c6"
      unitRef="usd">50752000</us-gaap:ProceedsFromIssuanceOfSecuredDebt>
    <us-gaap:RepaymentsOfSecuredDebt
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDMtMS0xLTEtMjE3OTc0_52f15a9e-ed2a-4f2f-93f7-af4e02e22c3d"
      unitRef="usd">0</us-gaap:RepaymentsOfSecuredDebt>
    <us-gaap:RepaymentsOfSecuredDebt
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDMtMy0xLTEtMjE3OTc0_e8e36c38-0f77-4e20-afa2-e2a121cb5cbc"
      unitRef="usd">0</us-gaap:RepaymentsOfSecuredDebt>
    <us-gaap:RepaymentsOfSecuredDebt
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDMtNS0xLTEtMjE3OTc0_c36b2f67-3a97-4657-9df0-c26f98aafb42"
      unitRef="usd">99565000</us-gaap:RepaymentsOfSecuredDebt>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDUtMS0xLTEtMjE3OTc0_cca124aa-ddfd-4df3-9bff-995e0dc69047"
      unitRef="usd">0</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDUtMy0xLTEtMjE3OTc0_b156db21-c519-4b7b-a3bf-b9ea9a129955"
      unitRef="usd">0</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDUtNS0xLTEtMjE3OTc0_c55a8ee4-f09d-4bcd-86ff-ec61a5a5df86"
      unitRef="usd">4194000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDYtMS0xLTEtMjE3OTc0_3fffdb9c-29a3-47e6-8f10-7a7fdce073b5"
      unitRef="usd">-6163000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDYtMy0xLTEtMjE3OTc0_117edd74-a65a-4c81-9811-7740f0cdcf2a"
      unitRef="usd">-7348000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDYtNS0xLTEtMjE3OTc0_69ecc1e8-82d1-47c3-a50a-0a797999e886"
      unitRef="usd">-70358000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDctMS0xLTEtMjE3OTc0_3d274002-d697-45e7-96be-aa72c0782b25"
      unitRef="usd">12736000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDctMy0xLTEtMjE3OTc0_b1a1a8ab-9e63-4bbc-a2cd-5d56d56093e5"
      unitRef="usd">-82416000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDctNS0xLTEtMjE3OTc0_eaa49b77-564d-43d0-a052-7919f3ece22d"
      unitRef="usd">124452000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDktMS0xLTEtMjE3OTc0_5481898a-9219-4030-a51b-eaf93d4dec49"
      unitRef="usd">58283000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDktMy0xLTEtMjE3OTc0_54683052-72ef-4293-a4eb-ad2c62fce121"
      unitRef="usd">140699000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="id6e34c5cedfb495280df512e0d435d87_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNDktNS0xLTEtMjE3OTc0_a6b9fd72-e61e-4b2e-9882-c6db46374a33"
      unitRef="usd">16247000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNTAtMS0xLTEtMjE3OTc0_bc8c03cd-3b5c-4805-b69a-7c280905cb33"
      unitRef="usd">71019000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNTAtMy0xLTEtMjE3OTc0_6eed431f-aeac-407c-bac9-090293117188"
      unitRef="usd">58283000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNTAtNS0xLTEtMjE3OTc0_e6860aa8-aedc-43e1-93cb-95674e893ab8"
      unitRef="usd">140699000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:InterestPaidNet
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNTgtMS0xLTEtMjE3OTc0_41427afc-4bdc-4180-ac18-422e1a979f96"
      unitRef="usd">0</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNTgtMy0xLTEtMjE3OTc0_184ce692-af36-47a4-b7c7-02235acbae06"
      unitRef="usd">0</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNTgtNS0xLTEtMjE3OTc0_216e04a2-6d0d-44cd-bd95-8b07ef3b2bb6"
      unitRef="usd">1815000</us-gaap:InterestPaidNet>
    <us-gaap:IncomeTaxesPaid
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNTktMS0xLTEtMjE3OTc0_cb27f387-c08e-4f24-839d-9f078390c219"
      unitRef="usd">3338000</us-gaap:IncomeTaxesPaid>
    <us-gaap:IncomeTaxesPaid
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNTktMy0xLTEtMjE3OTc0_2427c746-1b81-4d04-b494-c4ee79c016c7"
      unitRef="usd">9324000</us-gaap:IncomeTaxesPaid>
    <us-gaap:IncomeTaxesPaid
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNTktNS0xLTEtMjE3OTc0_7775ca34-b55b-4b99-beb2-331989e93209"
      unitRef="usd">85000</us-gaap:IncomeTaxesPaid>
    <us-gaap:OperatingLeasePayments
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNjAtMS0xLTEtMjE3OTc0_5bcc78e2-f5e1-4ff5-8dff-f155742e3ea0"
      unitRef="usd">3933000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNjAtMy0xLTEtMjE3OTc0_18ec1d64-71c0-4bc3-9377-464fe4b76856"
      unitRef="usd">1618000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNjAtNS0xLTEtMjE3OTc0_3990be4f-bee5-4c8d-b421-dd61a33210ed"
      unitRef="usd">2198000</us-gaap:OperatingLeasePayments>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNjEtMS0xLTEtMjE3OTc0_a9207aa0-abcf-41d5-bfad-56190ebfd33d"
      unitRef="usd">0</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNjEtMy0xLTEtMjE3OTc0_e7622ea0-e77a-45d3-af9a-376e82f28fbf"
      unitRef="usd">11945000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjZhMmZhMWM1NGMyODQ1NDlhY2M3MzNhZjM4MzcyYmE1L3RhYmxlcmFuZ2U6NmEyZmExYzU0YzI4NDU0OWFjYzczM2FmMzgzNzJiYTVfNjEtNS0xLTEtMjE3OTc0_211af54b-3557-4c26-80c2-cf1dce496d70"
      unitRef="usd">6644000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjFlMzQzN2JjZjllNTQ3YzM5MjAwYTllYjJlZmQ3YWVjL3RhYmxlcmFuZ2U6MWUzNDM3YmNmOWU1NDdjMzkyMDBhOWViMmVmZDdhZWNfMi0xLTEtMS0yMTc5NzQ_ea1ec724-17a9-46ab-91de-a8df2748c9b8"
      unitRef="usd">70769000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjFlMzQzN2JjZjllNTQ3YzM5MjAwYTllYjJlZmQ3YWVjL3RhYmxlcmFuZ2U6MWUzNDM3YmNmOWU1NDdjMzkyMDBhOWViMmVmZDdhZWNfMi0zLTEtMS0yMTc5NzQ_0c153197-a4b5-4097-8760-eea97922c232"
      unitRef="usd">57847000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjFlMzQzN2JjZjllNTQ3YzM5MjAwYTllYjJlZmQ3YWVjL3RhYmxlcmFuZ2U6MWUzNDM3YmNmOWU1NDdjMzkyMDBhOWViMmVmZDdhZWNfMi01LTEtMS0yMTc5NzQ_42a34a31-795a-4e58-a411-ffc0ca488233"
      unitRef="usd">140263000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:RestrictedCashAndCashEquivalents
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjFlMzQzN2JjZjllNTQ3YzM5MjAwYTllYjJlZmQ3YWVjL3RhYmxlcmFuZ2U6MWUzNDM3YmNmOWU1NDdjMzkyMDBhOWViMmVmZDdhZWNfMy0xLTEtMS0yMTc5NzQ_94bf7c7f-7c7b-4b42-b4e8-080ee3ca4515"
      unitRef="usd">250000</us-gaap:RestrictedCashAndCashEquivalents>
    <us-gaap:RestrictedCashAndCashEquivalents
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjFlMzQzN2JjZjllNTQ3YzM5MjAwYTllYjJlZmQ3YWVjL3RhYmxlcmFuZ2U6MWUzNDM3YmNmOWU1NDdjMzkyMDBhOWViMmVmZDdhZWNfMy0zLTEtMS0yMTc5NzQ_3a23a920-0d6a-4426-8eac-f3bb8ef49221"
      unitRef="usd">436000</us-gaap:RestrictedCashAndCashEquivalents>
    <us-gaap:RestrictedCashAndCashEquivalents
      contextRef="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjFlMzQzN2JjZjllNTQ3YzM5MjAwYTllYjJlZmQ3YWVjL3RhYmxlcmFuZ2U6MWUzNDM3YmNmOWU1NDdjMzkyMDBhOWViMmVmZDdhZWNfMy01LTEtMS0yMTc5NzQ_7dd1d8f4-33a5-476c-9bc9-df48b28e7a10"
      unitRef="usd">436000</us-gaap:RestrictedCashAndCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjFlMzQzN2JjZjllNTQ3YzM5MjAwYTllYjJlZmQ3YWVjL3RhYmxlcmFuZ2U6MWUzNDM3YmNmOWU1NDdjMzkyMDBhOWViMmVmZDdhZWNfNC0xLTEtMS0yMTc5NzQ_a88b5ebc-6252-4948-88ef-2d52dfbff4db"
      unitRef="usd">71019000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjFlMzQzN2JjZjllNTQ3YzM5MjAwYTllYjJlZmQ3YWVjL3RhYmxlcmFuZ2U6MWUzNDM3YmNmOWU1NDdjMzkyMDBhOWViMmVmZDdhZWNfNC0zLTEtMS0yMTc5NzQ_b77e870b-a115-448a-971f-030a47a1db3d"
      unitRef="usd">58283000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83My9mcmFnOmM4NTU4MzYzZDNlMDRhMWNhZmM1Mjk1YjEwMmIyZDE2L3RhYmxlOjFlMzQzN2JjZjllNTQ3YzM5MjAwYTllYjJlZmQ3YWVjL3RhYmxlcmFuZ2U6MWUzNDM3YmNmOWU1NDdjMzkyMDBhOWViMmVmZDdhZWNfNC01LTEtMS0yMTc5NzQ_7addd876-a21c-44e1-8672-3611297c001b"
      unitRef="usd">140699000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:NatureOfOperations
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl83OS9mcmFnOjMyODE1MmYyYjAyYjQ1MDU4ODhmOWViNmIzNzFmNzFkL3RleHRyZWdpb246MzI4MTUyZjJiMDJiNDUwNTg4OGY5ZWI2YjM3MWY3MWRfMTA0Mw_52bb8fd6-ddad-4c73-9bc5-f744afba7329">Nature of BusinessAppFolio, Inc. ("we," "us" or "our") is a leading provider of cloud business management solutions for the real estate industry. Our solutions are designed to enable our property manager customers to digitally transform their businesses, address critical business operations and deliver a better customer experience. Digital transformation is effectively a requirement for business success in the modern world, and the way we work and live requires powerful software solutions.&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;During the year ended December&#160;31, 2020, we also provided cloud-based solutions and services to the legal industry via MyCase, a solution primarily designed for small and mid-sized law firms. As previously disclosed, we completed the sale of MyCase, Inc. on September 30, 2020. For additional details, see Note 3, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:115%"&gt;Sales of Subsidiary Businesses&lt;/span&gt;.</us-gaap:NatureOfOperations>
    <us-gaap:BasisOfPresentationAndSignificantAccountingPoliciesTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2NDA_2068c2d9-bc81-49bb-b801-f5c47f9c048f">Summary of Significant Accounting Policies&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Basis of Presentation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying Consolidated Financial Statements were prepared in accordance with accounting principles generally accepted in the United States of America (&#x201c;GAAP&#x201d;).&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Reclassification&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We reclassified certain amounts in our Consolidated Balance Sheets and Consolidated Statements of Cash Flows within the cash flows from operating activities section in the prior year to conform to the current year's presentation.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Principles of Consolidation &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying Consolidated Financial Statements include the operations of AppFolio, Inc. and its wholly owned subsidiaries. All intercompany balances and transactions have been eliminated in consolidation. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We accounted for our investment in SecureDocs, Inc. (&#x201c;SecureDocs&#x201d;) under the equity method of accounting as we had the ability to exert significant influence, but did not control and were not the primary beneficiary of the entity. Our investment in SecureDocs was not material and any income (loss) activity was not material individually or in the aggregate to our Consolidated Financial Statements for any period presented. In December 2021, we sold our interest in SecureDocs. Refer to Note 4, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Investment Securities and Fair Value Measurements&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; for additional information.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Use of Estimates&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of financial statements in conformity with GAAP requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and the disclosure of contingent assets and liabilities at the dates of the financial statements, and the reported amounts of revenue, expenses, other income, and provision for income taxes during the reporting period. Assets and liabilities which are subject to judgment and use of estimates include the fair value of  financial instruments, capitalized software development costs, period of benefit associated with deferred costs, incremental borrowing rate used to measure operating lease liabilities, the recoverability of goodwill and long-lived assets, income taxes, useful lives associated with property and equipment and intangible assets, contingencies, assumptions underlying performance-based compensation (whether cash or stock-based), and assumptions underlying stock-based compensation. Actual results could differ from those estimates and any such differences may have a material impact on our Consolidated Financial Statements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Segment Information &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our chief operating decision maker reviews financial information presented on an aggregated and consolidated basis, together with revenue information for our core solutions, Value Added Services, and other service offerings, principally to make decisions about how to allocate resources and to measure our performance. Accordingly, we have determined that we have one reportable and operating segment. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Concentrations of Credit Risk &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject us to credit risk consist principally of cash, cash equivalents, restricted cash, accounts receivable, and investment securities. We maintain cash balances at financial institutions in excess of amounts insured by United States government agencies or payable by the United States government directly. We place our cash with high credit, quality financial institutions. We invest in investment securities with a minimum rating of A by Standard &amp;amp; Poor's or A-1 by Moody's and regularly monitor our investment security portfolio for changes in credit ratings.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Concentrations of credit risk with respect to accounts receivable and revenue are limited due to a large, diverse customer base. No individual customer represented 10% or more of accounts receivable at December&#160;31, 2022 and 2021 or revenue for the years ended December&#160;31, 2022, 2021 and 2020. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Fair Value Measurements &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Fair value is defined as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. We use a fair value hierarchy based on three levels of inputs, of which the first two are considered observable and the last unobservable, that may be used to measure fair value, which are the following: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;padding-left:47.25pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Level 1 &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;- Quoted prices in active markets for identical assets or liabilities. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;padding-left:47.25pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Level 2 &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;- Inputs other than Level 1 that are observable, either directly or indirectly, in the marketplace. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;padding-left:47.25pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Level 3 &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;- Unobservable inputs that are supported by little or no market activity. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cash, Cash Equivalents and Restricted Cash &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We consider all highly liquid investments, readily convertible to cash, and which have a remaining maturity date of three months or less at the date of purchase, to be cash equivalents. Cash and cash equivalents are recorded at fair value and consist primarily of bank deposits and money market funds. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Investment Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our investment securities currently consist of corporate bonds, United States government agency securities and treasury securities. We classify investment securities as available-for-sale at the time of purchase and reevaluate such classification at each balance sheet date. All investments are recorded at estimated fair value and investments with original maturities of less than one year at the time of purchase are classified as short-term. Unrealized gains and losses for available-for-sale investment securities are included in accumulated other comprehensive income, a component of stockholders' equity. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For available-for-sale debt securities in an unrealized loss position, we first assess whether we intend to sell, or whether it is more likely than not that we will be required to sell the security before recovery of its amortized cost basis. If either of these criteria is met, the security&#x2019;s amortized cost basis is written down to fair value through income. For securities in an unrealized loss position that do not meet these criteria, we evaluate whether the decline in fair value has resulted from&#160;credit loss&#160;or other factors. If this assessment indicates a&#160;credit loss&#160;exists, the credit-related portion of the loss is recorded as an allowance for losses on the security. No allowance for credit losses for available-for-sale investment securities was recorded as of December&#160;31, 2022 and 2021.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Accounts Receivable &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accounts receivable are recorded at the invoiced amount, net of an allowance for credit losses. The allowance for credit losses is based on historical loss experience, the number of days that receivables are past due, and an evaluation of the potential risk of loss associated with delinquent accounts. Accounts receivable considered uncollectible are charged against the allowance for credit losses when identified. We do not have any off-balance sheet credit exposure related to our customers. At December&#160;31, 2022 and 2021, our allowance for credit losses was not material. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Property and Equipment &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment is stated at cost net of accumulated depreciation. Depreciation is calculated using the straight-line method over the estimated useful lives of assets as follows: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:3pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.438%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.723%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.439%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Type&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Depreciation Period&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Office equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3 to 5 years&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Shorter of remaining life of lease or asset life&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Leases &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We determine if an arrangement is a lease at inception. Operating lease right-of-use ("ROU") assets and operating lease liabilities are recognized based on the present value of the future minimum lease payments, over the lease term at commencement date. As none of our leases provide an implicit rate, we use our incremental borrowing rate based on the information available at commencement date in determining the present value of future payments. The operating lease ROU assets also include any lease payments made to the lessor before or at the lease commencement date and excludes lease incentives received and initial direct costs incurred. Our lease terms may include options to extend the lease when it is reasonably certain that we will exercise that option. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Lease expense for minimum lease payments is recognized on a straight-line basis over the lease term. We have lease arrangements with lease and non-lease components, which are generally accounted for as a single lease component. Leases with an initial term of twelve months or less are not recorded on the balance sheet; we recognize lease expense for these leases on a straight-line basis over the lease term.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Capitalized Software Development Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Software development costs consist of certain payroll and stock compensation costs incurred to develop functionality of our internal-use software solutions. We capitalize certain software development costs for new offerings as well as significant upgrades and enhancements to our existing software solutions. Capitalized software development costs are amortized using the straight-line method over an estimated useful life of three years. We do not transfer ownership of our software, license, or lease our software to third parties.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Goodwill and Intangible Assets &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill is tested for impairment at least annually at the reporting unit level or at other times if an event occurs or circumstances change that would more likely than not reduce the fair value of a reporting unit below its carrying amount. A qualitative assessment is performed to determine whether it is more likely than not that the fair value of its reporting unit is less than its carrying amount. A quantitative assessment is performed if the qualitative assessment results in a more-likely-than-not determination or if a qualitative assessment is not performed. The quantitative assessment considers whether the carrying amount of a reporting unit exceeds its fair value, in which case an impairment charge is recorded to the extent that the reporting unit&#x2019;s carrying value exceeds its fair value. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We test for goodwill impairment annually during the fourth quarter of the calendar year. Based on the assessment performed at November 1, 2022, we determined it was not more likely than not that our reporting unit fair value was less than its carrying value and no quantitative impairment test assessment was required. No impairment losses were recorded for goodwill during the years ended December 31, 2022, 2021 and 2020. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets primarily consist of acquired database and technology, non-compete agreements, customer and partner relationships, trademarks and trade names, domain names and patents, which are recorded at cost, less accumulated amortization. We determine the appropriate useful life of our intangible assets by performing an analysis of expected cash flows of the acquired assets. Intangible assets are amortized over their estimated useful lives on a straight-line basis, which approximates the pattern in which the economic benefits of the assets are consumed. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Impairment of Long-Lived Assets &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We assess the recoverability of our long-lived assets when events or changes in circumstances indicate that the carrying value of an asset may not be recoverable or that the useful lives of those assets are no longer appropriate. An impairment charge would be recognized when the carrying amount of a long-lived asset or asset group is not recoverable and exceeds its fair value. The carrying amount of a long-lived asset or asset group is not recoverable if it exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset or asset group. We recorded net &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTA5OTUxMTY3OTY5Ng_2ad02eb3-5486-44ad-9073-f89333ec3519"&gt;lease-related impairment charges&lt;/span&gt; of $22.0 million for the year ended December&#160;31, 2022. Refer to Note 9, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Leases&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; for additional information. There were no impairment charges related to the identified long-lived assets for the years ended December&#160;31, 2021 and 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Revenue Recognition &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We generate revenue from our customers primarily for subscriptions to access our core solutions and Value Added Services. Revenue is recognized upon transfer of control of promised services in an amount that reflects the consideration we expect to receive in exchange for those services. We enter into contracts that can include various combinations of services, which are generally capable of being distinct, distinct within the context of the contract, and accounted for as separate performance obligations. Revenue is recognized net of any taxes collected from customers, which are subsequently remitted to governmental authorities. We recognize revenue in proportion to the amount we have the right to invoice for certain core solutions and Value Added Services revenue, as that amount corresponds directly with our performance completed to date. Refer to Note 14, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Revenue and Other Information&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; for the disaggregated breakdown of revenue between Core solutions, Value Added Services and Other revenue. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Core Solutions&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We charge our customers on a subscription basis for our core solutions. Our customers do not have rights to the underlying software code of our solutions, and, accordingly, we recognize subscription revenue over time on a straight-line basis over the contract term beginning on the date that our service is made available to the customer. The terms of our subscription agreements are monthly, annual, and multiyear and we typically invoice our customers for subscription services in monthly or annual installments, in advance of the subscription period. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Value Added Services&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We primarily charge our customers on a usage basis for our Value Added Services. Usage-based fees are charged either as a percentage of the transaction amount (e.g., for certain of our electronic payment services) or on a flat fee per transaction basis with no minimum usage commitments (e.g., for our tenant screening and risk mitigation services). We recognize revenue for usage-based services in the period the service is rendered. Our electronic payments services fees are recorded gross of the interchange and payment processing related fees. We generally invoice our customers for usage-based services on a monthly basis for services rendered in the preceding month. We also have certain Value Added Services which are charged on a subscription basis. We typically invoice our customers for subscription-based services in monthly installments, in advance of the subscription period. We recognize revenue for subscription-based services over time on a straight-line basis over the contract term beginning on the date that our service is made available to the customer. Some subscription or usage-based Value Added Services, such as fees for electronic payment services, are paid by either our customers or clients of our customers at the time the services are rendered. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We work with third-party partners to provide certain of our Value Added Services. For these Value Added Services, we evaluate whether we are the principal, and report revenue on a gross basis, or the agent, and report revenue on a net basis. In this assessment we consider if we obtain control of the specified services before they are transferred to the customer, as well as other indicators such as whether we are the party primarily responsible for fulfillment, and whether we have discretion in establishing price.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Other Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other revenue include fees from one-time services related to the implementation of our software solutions and other recurring or one-time fees related to our customers who are not otherwise using our core solutions. This includes legacy customers of businesses we have acquired where the customers haven't migrated to our core solutions. The fees for implementation and data migration services are billed upon signing our core subscription contract and are recognized as revenue in the period the service is rendered. Other services are billed when the services rendered are completed and delivered to the customer or billed in advance and deferred over the subscription period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Deferred Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We record deferred revenue when cash payments are received in advance of our performance. Deferred revenue as of December&#160;31, 2022 and 2021 was $0.9 million and $2.5 million, respectively. During the twelve months ended December&#160;31, 2022 and 2021, we recognized revenue of $2.4 million and $2.2 million, respectively, that were included in the deferred revenue balances at December&#160;31, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Remaining Performance Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Transaction price allocated to remaining performance obligations (&#x201c;RPO&#x201d;) represents contracted revenue that has not been recognized, which includes deferred revenue and non-cancelable amounts that will be invoiced and recognized as revenue in future periods. RPO does not include revenue related to performance obligations that are part of a contract whose original expected duration is one year or less or related to usage-based Value Added Services that are billed in arrears. &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the total non-cancelable RPO under our contracts with customers was $15&#160;million, and we expect to recognize revenue on approximately 47% of these RPO over the following 12 months, with the balance to be recognized thereafter.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Deferred Costs &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred costs, which primarily consist of sales commissions, are considered incremental and recoverable costs of obtaining a contract with a customer. These costs are deferred and then amortized on a straight-line basis over a period of benefit that we have determined to be three years. We typically do not pay commissions for contract renewals. We determined the period of benefit by taking into consideration our customer contract term, the useful life of our internal-use software, average customer life, and other factors. Amortization expense for the deferred costs is included within&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;sales and marketing expense in the accompanying Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred costs were $15.8 million and $12.4 million at December&#160;31, 2022 and 2021, respectively, of which $8.1 million and $6.4 million, respectively, are included in &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; and $7.7 million and $6.0 million, respectively, are included in &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Other assets&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; in the accompanying Consolidated Balance Sheets. Amortization expense for deferred costs was $8.1 million, $6.8 million, and $5.8 million for the years ended December&#160;31, 2022, 2021, and 2020, respectively. For the&#160;years ended&#160;December&#160;31, 2022 and 2021, no impairments were identified in relation to the costs capitalized for the periods presented.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cost of Revenue  (Exclusive of Depreciation and Amortization)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:112%"&gt;Many of our Value Added Services are facilitated by third-party service providers. Cost of revenue paid to these third-party service providers includes the cost of electronic interchange and payment processing-related services to support our payments services, the cost of credit reporting services for our tenant screening services, and various costs associated with our risk mitigation service providers. These third-party costs vary both in amount and as a percent of revenue for each Value Added Service offering. Cost of revenue also consists of personnel-related costs for our employees focused on customer service and the support of our operations (including salaries, performance-based compensation, benefits, and stock-based compensation), platform infrastructure costs (such as data center operations and hosting-related costs), and allocated shared and other costs. Cost of revenue excludes depreciation of property and equipment, amortization of capitalized software development costs and amortization of intangible assets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Sales and Marketing &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Sales and marketing expense consists of personnel-related costs for our employees focused on sales and marketing (including salaries, sales commissions, performance-based compensation, benefits, and stock-based compensation), costs associated with sales and marketing activities, and allocated shared and other costs. Marketing activities include advertising, online lead generation, lead nurturing, customer and industry events, and the creation of industry-related content and collateral. We focus our sales and marketing efforts on generating awareness of our software solutions, creating sales leads, establishing and promoting our brands, and cultivating an educated community of successful and vocal customers. Advertising expenses were $9.2 million, $9.4 million and $7.0 million for each of the years ended December&#160;31, 2022, 2021 and 2020, respectively, and are expensed as incurred. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Research and Product Development &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Research and product development expense consists of personnel-related costs for our employees focused on research and product development (including salaries, performance-based compensation, benefits, and stock-based compensation), fees for third-party development resources, and allocated shared and other costs. Our research and product development efforts are focused on expanding functionality and the ease of use of our existing software solutions by adding new core functionality, Value Added Services and other improvements, as well as developing new products and services. We capitalize our software development costs which meet the criteria for capitalization. Amortization of capitalized software development costs is included in depreciation and amortization expense.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;General and Administrative &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;General and administrative expense consists of personnel-related costs for employees in our executive, finance, information technology, human resources, legal, compliance, corporate development and administrative organizations (including salaries, performance-based compensation, benefits, and stock-based compensation). In addition, general and administrative expense includes fees for third-party professional services (including audit, legal, compliance, and tax services), transaction costs related to sales of subsidiary businesses, regulatory f, other corporate expenses, impairment of long-lived assets, and allocated shared costs.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Depreciation and Amortization &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Depreciation and amortization expense includes depreciation of property and equipment, amortization of capitalized software development costs, and amortization of intangible assets. We depreciate or amortize property and equipment, software development costs, and intangible assets over their expected useful lives on a straight-line basis, which approximates the pattern in which the economic benefits of the assets are consumed. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize stock-based compensation expense for restricted stock awards ("RSAs") and restricted stock units ("RSUs") with only service conditions on a straight-line basis over the requisite service period. For RSUs with both service and performance conditions (performance share units ("PSUs")), compensation cost is recorded on a graded-vesting method, if it is probable that the performance condition will be achieved. Adjustments to compensation expense are made each period based on changes in our estimate of the number of PSUs that are probable of vesting. PSUs will vest on the vesting date and upon achievement of the relevant performance metric once such calculation is finalized in accordance with our internal policies. We estimate a forfeiture rate to calculate our stock-based compensation expense for our stock-based awards.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Income Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize deferred tax liabilities and assets for the expected future tax consequences of temporary differences between the carrying amounts and the tax bases of assets and liabilities. Deferred income tax assets and liabilities are measured using enacted tax rates expected to apply to taxable income in the years in which those temporary differences are expected to be recovered or settled. The effect of a change in tax rates on deferred tax assets and liabilities is recognized in the Consolidated Statements of Operations in the period that includes the enactment date. A valuation allowance is recorded when it is more likely than not that some of the deferred tax assets will not be realized. In evaluating the need for a valuation allowance, we consider the weighting of all available positive and negative evidence, which includes, among other things, the nature, frequency and severity of current and cumulative taxable income or losses, future projections of profitability, and the duration of statutory carryforward periods.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Net (Loss) Income per Common Share&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Basic net (loss) income per share includes no dilution and is computed by dividing net (loss) income for the period by the weighted average number of common shares outstanding during the period. Diluted net income per share is computed by dividing net income for the period by the weighted average number of shares of common stock and potentially dilutive common stock outstanding during the period. The dilutive effect of outstanding options and equity incentive awards is reflected in diluted net income per share by application of the treasury stock method. The calculation of diluted net income per share excludes all anti-dilutive common shares.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Net (loss) income per common share was the same for shares of our Class A and Class B common stock because they are entitled to the same liquidation and dividend rights and are therefore combined in the table below. The following table presents a reconciliation of the weighted average number of shares of our Class A and Class B common stock used to compute net (loss) income per common share (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:3pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.367%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.256%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.256%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.261%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,015&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,583&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Weighted average unvested restricted shares subject to repurchase&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; basic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,578&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,264&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:15pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; basic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,578&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,264&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Plus: Weighted average options, restricted stock units and restricted shares used to compute diluted net income per common share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,123&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,449&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; diluted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,701&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,713&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the years ended December&#160;31, 2021 and 2020, an aggregate of 181,000 and 79,000 shares, respectively, underlying performance-based restricted stock units ("PSUs") were not included in the computations of diluted and anti-dilutive shares as they are considered contingently issuable upon satisfaction of pre-defined performance measures and their respective performance measures had not been met. Restricted stock units ("RSUs") with an anti-dilutive effect were excluded from the calculation of weighted average number of shares used to compute diluted net income per common share and they were not material for the years ended December&#160;31, 2021 and 2020. Because we reported a net loss for the years ended December&#160;31, 2022, all potentially dilutive common shares are anti-dilutive for these periods and have been excluded from the calculation of net loss per share.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Recent Accounting Pronouncements Not Yet Adopted&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;In October 2021, the Financial Accounting Standards Board ("FASB") issued Accounting Standards Update ("ASU") 2021-08, "&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:115%"&gt;Business Combinations (Topic 805): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;," which requires contract assets and contract liabilities acquired in a business combination to be recognized and measured by the acquirer on the acquisition date in accordance with ASC 606, "&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:115%"&gt;Revenue from Contracts with Customers&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;," as if the acquirer had originated the contracts. ASU 2021-08 is effective for fiscal years beginning after December 15, 2022, with early adoption permitted. We expect to adopt ASU 2021-08 on January 1, 2023.&lt;/span&gt;&lt;/div&gt;</us-gaap:BasisOfPresentationAndSignificantAccountingPoliciesTextBlock>
    <us-gaap:BasisOfAccountingPolicyPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2NTc_390d30c8-72b6-4cde-be4f-fc9de67277b7">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Basis of Presentation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying Consolidated Financial Statements were prepared in accordance with accounting principles generally accepted in the United States of America (&#x201c;GAAP&#x201d;).&lt;/span&gt;&lt;/div&gt;</us-gaap:BasisOfAccountingPolicyPolicyTextBlock>
    <us-gaap:PriorPeriodReclassificationAdjustmentDescription
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1NzI_1446df9a-4f22-4a05-90ab-2628a2b2c896">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Reclassification&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We reclassified certain amounts in our Consolidated Balance Sheets and Consolidated Statements of Cash Flows within the cash flows from operating activities section in the prior year to conform to the current year's presentation.&lt;/span&gt;&lt;/div&gt;</us-gaap:PriorPeriodReclassificationAdjustmentDescription>
    <us-gaap:ConsolidationPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1NTY_3ab3159c-1d70-4983-a215-dc04d787c52c">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Principles of Consolidation &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying Consolidated Financial Statements include the operations of AppFolio, Inc. and its wholly owned subsidiaries. All intercompany balances and transactions have been eliminated in consolidation. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We accounted for our investment in SecureDocs, Inc. (&#x201c;SecureDocs&#x201d;) under the equity method of accounting as we had the ability to exert significant influence, but did not control and were not the primary beneficiary of the entity. Our investment in SecureDocs was not material and any income (loss) activity was not material individually or in the aggregate to our Consolidated Financial Statements for any period presented. In December 2021, we sold our interest in SecureDocs. Refer to Note 4, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Investment Securities and Fair Value Measurements&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; for additional information.&lt;/span&gt;&lt;/div&gt;</us-gaap:ConsolidationPolicyTextBlock>
    <us-gaap:UseOfEstimates
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2MjM_f6afff07-d4a9-48d6-bbac-53b3e4e49e28">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Use of Estimates&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of financial statements in conformity with GAAP requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and the disclosure of contingent assets and liabilities at the dates of the financial statements, and the reported amounts of revenue, expenses, other income, and provision for income taxes during the reporting period. Assets and liabilities which are subject to judgment and use of estimates include the fair value of  financial instruments, capitalized software development costs, period of benefit associated with deferred costs, incremental borrowing rate used to measure operating lease liabilities, the recoverability of goodwill and long-lived assets, income taxes, useful lives associated with property and equipment and intangible assets, contingencies, assumptions underlying performance-based compensation (whether cash or stock-based), and assumptions underlying stock-based compensation. Actual results could differ from those estimates and any such differences may have a material impact on our Consolidated Financial Statements.&lt;/span&gt;&lt;/div&gt;</us-gaap:UseOfEstimates>
    <us-gaap:SegmentReportingPolicyPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1NzA_1b149104-dae4-4092-9cb0-b0d1dd795803">Segment Information Our chief operating decision maker reviews financial information presented on an aggregated and consolidated basis, together with revenue information for our core solutions, Value Added Services, and other service offerings, principally to make decisions about how to allocate resources and to measure our performance. Accordingly, we have determined that we have one reportable and operating segment.</us-gaap:SegmentReportingPolicyPolicyTextBlock>
    <us-gaap:NumberOfOperatingSegments
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc5Mw_6ba26998-cabd-4733-a0cf-efb069614cbb"
      unitRef="segment">1</us-gaap:NumberOfOperatingSegments>
    <us-gaap:NumberOfReportableSegments
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc5Mw_7f205729-34dd-4721-817a-d6de60fcbccc"
      unitRef="segment">1</us-gaap:NumberOfReportableSegments>
    <us-gaap:ConcentrationRiskCreditRisk
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2NTg_add81a4b-cfc9-4bff-9e64-8133be2409cb">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Concentrations of Credit Risk &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject us to credit risk consist principally of cash, cash equivalents, restricted cash, accounts receivable, and investment securities. We maintain cash balances at financial institutions in excess of amounts insured by United States government agencies or payable by the United States government directly. We place our cash with high credit, quality financial institutions. We invest in investment securities with a minimum rating of A by Standard &amp;amp; Poor's or A-1 by Moody's and regularly monitor our investment security portfolio for changes in credit ratings.&lt;/span&gt;&lt;/div&gt;Concentrations of credit risk with respect to accounts receivable and revenue are limited due to a large, diverse customer base.</us-gaap:ConcentrationRiskCreditRisk>
    <us-gaap:FairValueMeasurementPolicyPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2NjY_8df414c5-046e-4a85-aa9a-a5835d16661c">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Fair Value Measurements &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Fair value is defined as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. We use a fair value hierarchy based on three levels of inputs, of which the first two are considered observable and the last unobservable, that may be used to measure fair value, which are the following: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;padding-left:47.25pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Level 1 &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;- Quoted prices in active markets for identical assets or liabilities. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;padding-left:47.25pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Level 2 &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;- Inputs other than Level 1 that are observable, either directly or indirectly, in the marketplace. &lt;/span&gt;&lt;/div&gt;Level 3 - Unobservable inputs that are supported by little or no market activity.</us-gaap:FairValueMeasurementPolicyPolicyTextBlock>
    <us-gaap:CashAndCashEquivalentsPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1NjI_12c32ec0-0e82-4b1c-b43e-c8a3dc14d58e">Cash, Cash Equivalents and Restricted Cash We consider all highly liquid investments, readily convertible to cash, and which have a remaining maturity date of three months or less at the date of purchase, to be cash equivalents. Cash and cash equivalents are recorded at fair value and consist primarily of bank deposits and money market funds.</us-gaap:CashAndCashEquivalentsPolicyTextBlock>
    <us-gaap:MarketableSecuritiesPolicy
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1NTk_9dc21300-554d-4e69-ad20-d7e6d632e63f">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Investment Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our investment securities currently consist of corporate bonds, United States government agency securities and treasury securities. We classify investment securities as available-for-sale at the time of purchase and reevaluate such classification at each balance sheet date. All investments are recorded at estimated fair value and investments with original maturities of less than one year at the time of purchase are classified as short-term. Unrealized gains and losses for available-for-sale investment securities are included in accumulated other comprehensive income, a component of stockholders' equity. &lt;/span&gt;&lt;/div&gt;For available-for-sale debt securities in an unrealized loss position, we first assess whether we intend to sell, or whether it is more likely than not that we will be required to sell the security before recovery of its amortized cost basis. If either of these criteria is met, the security&#x2019;s amortized cost basis is written down to fair value through income. For securities in an unrealized loss position that do not meet these criteria, we evaluate whether the decline in fair value has resulted from&#160;credit loss&#160;or other factors. If this assessment indicates a&#160;credit loss&#160;exists, the credit-related portion of the loss is recorded as an allowance for losses on the security.</us-gaap:MarketableSecuritiesPolicy>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostAllowanceForCreditLossExcludingAccruedInterest
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfNjE4NA_34c7227c-cfef-442f-9905-578531d16f05"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostAllowanceForCreditLossExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostAllowanceForCreditLossExcludingAccruedInterest
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfNjE4NA_da22e435-4b74-41cc-97f9-5978bacea361"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostAllowanceForCreditLossExcludingAccruedInterest>
    <us-gaap:TradeAndOtherAccountsReceivablePolicy
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1NDE_ba8d6369-81ab-418a-a839-0abcf4ef36c5">Accounts Receivable Accounts receivable are recorded at the invoiced amount, net of an allowance for credit losses. The allowance for credit losses is based on historical loss experience, the number of days that receivables are past due, and an evaluation of the potential risk of loss associated with delinquent accounts. Accounts receivable considered uncollectible are charged against the allowance for credit losses when identified. We do not have any off-balance sheet credit exposure related to our customers.</us-gaap:TradeAndOtherAccountsReceivablePolicy>
    <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2MTI_13f5996a-35bf-4c88-96c7-d8327c1cfc16">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Property and Equipment &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment is stated at cost net of accumulated depreciation. Depreciation is calculated using the straight-line method over the estimated useful lives of assets as follows: &lt;/span&gt;&lt;/div&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.438%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.723%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.439%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Type&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Depreciation Period&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Office equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3 to 5 years&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Shorter of remaining life of lease or asset life&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1NjQ_d07e0b4a-b6ed-47b7-874e-b4704e81afb7">Property and equipment is stated at cost net of accumulated depreciation. Depreciation is calculated using the straight-line method over the estimated useful lives of assets as follows: &lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.438%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.723%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.439%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Type&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Depreciation Period&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Office equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3 to 5 years&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Shorter of remaining life of lease or asset life&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment, net consists of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.349%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,529&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,884&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,747&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,167&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Office equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,285&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;22,679&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Construction in process&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;544&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,227&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross property and equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,245&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,242&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Accumulated depreciation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(13,135)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(10,763)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total property and equipment, net&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;30,479&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentTextBlock>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="ib9902d0a55894c57a2d3495203e46d95_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOmI4YTc5YjY0Nzc4NDQyZmI4MjA5Y2VkNzljMWM4YjVkL3RhYmxlcmFuZ2U6YjhhNzliNjQ3Nzg0NDJmYjgyMDljZWQ3OWMxYzhiNWRfMS0yLTEtMS0yMTc5NzQ_fbddb895-1e75-4182-861d-eb31eac08715">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i61946b80fdff478aa3fc8c6d87e620d0_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOmI4YTc5YjY0Nzc4NDQyZmI4MjA5Y2VkNzljMWM4YjVkL3RhYmxlcmFuZ2U6YjhhNzliNjQ3Nzg0NDJmYjgyMDljZWQ3OWMxYzhiNWRfMi0yLTEtMS0yMTc5NzQ_0f10a952-c14d-4567-af53-b26af6108dbc">P7Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i0fe71a87dbfe4d058ddb6776740e3572_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOmI4YTc5YjY0Nzc4NDQyZmI4MjA5Y2VkNzljMWM4YjVkL3RhYmxlcmFuZ2U6YjhhNzliNjQ3Nzg0NDJmYjgyMDljZWQ3OWMxYzhiNWRfMy0yLTEtMS0yMTc5NzQvdGV4dHJlZ2lvbjo5ZjIyM2I0OWYxZjc0YTdjOGViNGE3Nzg2MWZkZTE0MF80_ea2a96d0-0a07-4bca-b53b-7fb93c16a5c4">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i549bba795c8f4ae698a61021c3687e34_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOmI4YTc5YjY0Nzc4NDQyZmI4MjA5Y2VkNzljMWM4YjVkL3RhYmxlcmFuZ2U6YjhhNzliNjQ3Nzg0NDJmYjgyMDljZWQ3OWMxYzhiNWRfMy0yLTEtMS0yMTc5NzQvdGV4dHJlZ2lvbjo5ZjIyM2I0OWYxZjc0YTdjOGViNGE3Nzg2MWZkZTE0MF8xMA_d6290b21-ac4b-4ac6-af61-8754b02250e6">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:LesseeLeasesPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1ODA_aff562ed-0e78-4e11-aa1a-f1c034873faa">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Leases &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We determine if an arrangement is a lease at inception. Operating lease right-of-use ("ROU") assets and operating lease liabilities are recognized based on the present value of the future minimum lease payments, over the lease term at commencement date. As none of our leases provide an implicit rate, we use our incremental borrowing rate based on the information available at commencement date in determining the present value of future payments. The operating lease ROU assets also include any lease payments made to the lessor before or at the lease commencement date and excludes lease incentives received and initial direct costs incurred. Our lease terms may include options to extend the lease when it is reasonably certain that we will exercise that option. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Lease expense for minimum lease payments is recognized on a straight-line basis over the lease term. We have lease arrangements with lease and non-lease components, which are generally accounted for as a single lease component. Leases with an initial term of twelve months or less are not recorded on the balance sheet; we recognize lease expense for these leases on a straight-line basis over the lease term.&lt;/span&gt;&lt;/div&gt;</us-gaap:LesseeLeasesPolicyTextBlock>
    <us-gaap:InternalUseSoftwarePolicy
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2MTY_9a4d4eb4-c6fc-47ee-9ebc-797309738212">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Capitalized Software Development Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Software development costs consist of certain payroll and stock compensation costs incurred to develop functionality of our internal-use software solutions. We capitalize certain software development costs for new offerings as well as significant upgrades and enhancements to our existing software solutions. Capitalized software development costs are amortized using the straight-line method over an estimated useful life of three years. We do not transfer ownership of our software, license, or lease our software to third parties.&lt;/span&gt;&lt;/div&gt;</us-gaap:InternalUseSoftwarePolicy>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i5c0714d245a3425fb525df7a7f531280_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfODcyMA_e91b5894-8c3e-423e-a54d-20c8db6c9ea0">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:GoodwillAndIntangibleAssetsPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2NjA_fa898b14-425d-46af-9ab0-9f9e42ec35ec">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Goodwill and Intangible Assets &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill is tested for impairment at least annually at the reporting unit level or at other times if an event occurs or circumstances change that would more likely than not reduce the fair value of a reporting unit below its carrying amount. A qualitative assessment is performed to determine whether it is more likely than not that the fair value of its reporting unit is less than its carrying amount. A quantitative assessment is performed if the qualitative assessment results in a more-likely-than-not determination or if a qualitative assessment is not performed. The quantitative assessment considers whether the carrying amount of a reporting unit exceeds its fair value, in which case an impairment charge is recorded to the extent that the reporting unit&#x2019;s carrying value exceeds its fair value. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We test for goodwill impairment annually during the fourth quarter of the calendar year. Based on the assessment performed at November 1, 2022, we determined it was not more likely than not that our reporting unit fair value was less than its carrying value and no quantitative impairment test assessment was required. No impairment losses were recorded for goodwill during the years ended December 31, 2022, 2021 and 2020. &lt;/span&gt;&lt;/div&gt;Intangible assets primarily consist of acquired database and technology, non-compete agreements, customer and partner relationships, trademarks and trade names, domain names and patents, which are recorded at cost, less accumulated amortization. We determine the appropriate useful life of our intangible assets by performing an analysis of expected cash flows of the acquired assets. Intangible assets are amortized over their estimated useful lives on a straight-line basis, which approximates the pattern in which the economic benefits of the assets are consumed.</us-gaap:GoodwillAndIntangibleAssetsPolicyTextBlock>
    <us-gaap:GoodwillImpairmentLossNetOfTax
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfOTk1OQ_79d9f006-06bc-4539-84a1-6317e454f6fd"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLossNetOfTax>
    <us-gaap:GoodwillImpairmentLossNetOfTax
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfOTk1OQ_a78510e7-afd6-4803-a4a0-8cfdc91e9390"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLossNetOfTax>
    <us-gaap:GoodwillImpairmentLossNetOfTax
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfOTk1OQ_dbe834e5-d59e-4fed-923f-1ff992fb497d"
      unitRef="usd">0</us-gaap:GoodwillImpairmentLossNetOfTax>
    <us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2NTY_663a53d8-2159-47b4-80c2-b8079e94bb3c">Impairment of Long-Lived Assets We assess the recoverability of our long-lived assets when events or changes in circumstances indicate that the carrying value of an asset may not be recoverable or that the useful lives of those assets are no longer appropriate. An impairment charge would be recognized when the carrying amount of a long-lived asset or asset group is not recoverable and exceeds its fair value. The carrying amount of a long-lived asset or asset group is not recoverable if it exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset or asset group.</us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock>
    <us-gaap:ImpairmentOfLongLivedAssetsHeldForUse
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMzg0ODI5MDc1MjQ5OQ_d1f03b5f-78c4-4c35-b3d9-b0d810c81ce4"
      unitRef="usd">22000000</us-gaap:ImpairmentOfLongLivedAssetsHeldForUse>
    <us-gaap:ImpairmentOfLongLivedAssetsHeldForUse
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTEyNjY_5bf6e8af-f517-469d-a8f2-a658254ed43c"
      unitRef="usd">0</us-gaap:ImpairmentOfLongLivedAssetsHeldForUse>
    <us-gaap:ImpairmentOfLongLivedAssetsHeldForUse
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTEyNjY_c5944399-5926-43b5-a9cf-78d152186f07"
      unitRef="usd">0</us-gaap:ImpairmentOfLongLivedAssetsHeldForUse>
    <us-gaap:RevenueFromContractWithCustomerPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1ODE_8094dd84-6821-4a38-8a5b-5c893d06c95e">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Revenue Recognition &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We generate revenue from our customers primarily for subscriptions to access our core solutions and Value Added Services. Revenue is recognized upon transfer of control of promised services in an amount that reflects the consideration we expect to receive in exchange for those services. We enter into contracts that can include various combinations of services, which are generally capable of being distinct, distinct within the context of the contract, and accounted for as separate performance obligations. Revenue is recognized net of any taxes collected from customers, which are subsequently remitted to governmental authorities. We recognize revenue in proportion to the amount we have the right to invoice for certain core solutions and Value Added Services revenue, as that amount corresponds directly with our performance completed to date. Refer to Note 14, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Revenue and Other Information&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; for the disaggregated breakdown of revenue between Core solutions, Value Added Services and Other revenue. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Core Solutions&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We charge our customers on a subscription basis for our core solutions. Our customers do not have rights to the underlying software code of our solutions, and, accordingly, we recognize subscription revenue over time on a straight-line basis over the contract term beginning on the date that our service is made available to the customer. The terms of our subscription agreements are monthly, annual, and multiyear and we typically invoice our customers for subscription services in monthly or annual installments, in advance of the subscription period. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Value Added Services&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We primarily charge our customers on a usage basis for our Value Added Services. Usage-based fees are charged either as a percentage of the transaction amount (e.g., for certain of our electronic payment services) or on a flat fee per transaction basis with no minimum usage commitments (e.g., for our tenant screening and risk mitigation services). We recognize revenue for usage-based services in the period the service is rendered. Our electronic payments services fees are recorded gross of the interchange and payment processing related fees. We generally invoice our customers for usage-based services on a monthly basis for services rendered in the preceding month. We also have certain Value Added Services which are charged on a subscription basis. We typically invoice our customers for subscription-based services in monthly installments, in advance of the subscription period. We recognize revenue for subscription-based services over time on a straight-line basis over the contract term beginning on the date that our service is made available to the customer. Some subscription or usage-based Value Added Services, such as fees for electronic payment services, are paid by either our customers or clients of our customers at the time the services are rendered. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We work with third-party partners to provide certain of our Value Added Services. For these Value Added Services, we evaluate whether we are the principal, and report revenue on a gross basis, or the agent, and report revenue on a net basis. In this assessment we consider if we obtain control of the specified services before they are transferred to the customer, as well as other indicators such as whether we are the party primarily responsible for fulfillment, and whether we have discretion in establishing price.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Other Revenue&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other revenue include fees from one-time services related to the implementation of our software solutions and other recurring or one-time fees related to our customers who are not otherwise using our core solutions. This includes legacy customers of businesses we have acquired where the customers haven't migrated to our core solutions. The fees for implementation and data migration services are billed upon signing our core subscription contract and are recognized as revenue in the period the service is rendered. Other services are billed when the services rendered are completed and delivered to the customer or billed in advance and deferred over the subscription period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Deferred Revenue&lt;/span&gt;&lt;/div&gt;We record deferred revenue when cash payments are received in advance of our performance.Deferred Costs &lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred costs, which primarily consist of sales commissions, are considered incremental and recoverable costs of obtaining a contract with a customer. These costs are deferred and then amortized on a straight-line basis over a period of benefit that we have determined to be three years. We typically do not pay commissions for contract renewals. We determined the period of benefit by taking into consideration our customer contract term, the useful life of our internal-use software, average customer life, and other factors. Amortization expense for the deferred costs is included within&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt; &lt;/span&gt;sales and marketing expense in the accompanying Consolidated Statements of Operations.</us-gaap:RevenueFromContractWithCustomerPolicyTextBlock>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfNTQ5NzU1ODU3NzY1_8486326a-298b-437e-bfe9-8192add2125b"
      unitRef="usd">900000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfNTQ5NzU1ODU3Nzcy_5cc59751-5901-4583-bcb6-4670171931fc"
      unitRef="usd">2500000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTYxMDc_bea4a04b-93e6-4bf0-962a-3e76ace872b7"
      unitRef="usd">2400000</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTYxMTQ_e0e2a1c9-4f15-448b-9010-19ba3c7d8c57"
      unitRef="usd">2200000</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:RevenueRemainingPerformanceObligation
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfNTQ5NzU1ODY4NjUx_a9f7ab8b-4fd1-4ce2-b306-a599081e54e3"
      unitRef="usd">15000000</us-gaap:RevenueRemainingPerformanceObligation>
    <us-gaap:RevenueRemainingPerformanceObligationPercentage
      contextRef="ifab0afcf0bdd4be39027165c92a55f03_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTA5OTUxMTY4MzI2MQ_a43b9219-3b85-49f9-a58c-0c7026b05d94"
      unitRef="number">0.47</us-gaap:RevenueRemainingPerformanceObligationPercentage>
    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
      contextRef="ifab0afcf0bdd4be39027165c92a55f03_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTA5OTUxMTY4MzQ3NA_dbeec4ef-acec-476b-b259-3a051d0aeb73">P12M</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1>
    <us-gaap:CapitalizedContractCostAmortizationPeriod
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTY1MDQ_af05762b-3799-4f48-ad11-7d02c6efe839">P3Y</us-gaap:CapitalizedContractCostAmortizationPeriod>
    <us-gaap:CapitalizedContractCostNet
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTY5Njg_5f72f409-928b-4fc8-9bcf-03419a5f3fbc"
      unitRef="usd">15800000</us-gaap:CapitalizedContractCostNet>
    <us-gaap:CapitalizedContractCostNet
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTY5NzU_ca63b0a7-39a5-4d92-8131-8e515ae848d5"
      unitRef="usd">12400000</us-gaap:CapitalizedContractCostNet>
    <us-gaap:CapitalizedContractCostNetCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTcwMTU_b962c01c-6524-4d81-98c9-b66c6d135e0a"
      unitRef="usd">8100000</us-gaap:CapitalizedContractCostNetCurrent>
    <us-gaap:CapitalizedContractCostNetCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTcwMjI_4f9de898-9af8-4d06-a0a0-35fc97fe61d8"
      unitRef="usd">6400000</us-gaap:CapitalizedContractCostNetCurrent>
    <us-gaap:CapitalizedContractCostNetNoncurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTcxMDI_fe2cf850-2c89-4418-8467-95c2289eb227"
      unitRef="usd">7700000</us-gaap:CapitalizedContractCostNetNoncurrent>
    <us-gaap:CapitalizedContractCostNetNoncurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTcxMDk_8bf90eeb-aa4c-4667-ae5b-e72b5638a366"
      unitRef="usd">6000000</us-gaap:CapitalizedContractCostNetNoncurrent>
    <us-gaap:CapitalizedContractCostAmortization
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTcyNDk_2bc1d3ff-f0b9-4575-aeff-d0fee89902f7"
      unitRef="usd">8100000</us-gaap:CapitalizedContractCostAmortization>
    <us-gaap:CapitalizedContractCostAmortization
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTcyNTM_63f1f3f0-d5d1-4c90-ae18-7a48517016aa"
      unitRef="usd">6800000</us-gaap:CapitalizedContractCostAmortization>
    <us-gaap:CapitalizedContractCostAmortization
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTcyNjE_8aac4e12-2d44-4722-8888-085cc833b9ec"
      unitRef="usd">5800000</us-gaap:CapitalizedContractCostAmortization>
    <us-gaap:CapitalizedContractCostImpairmentLoss
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTY0OTI2NzQ4NzMyOA_06d83a65-b967-4426-9360-13b552855e3c"
      unitRef="usd">0</us-gaap:CapitalizedContractCostImpairmentLoss>
    <us-gaap:CapitalizedContractCostImpairmentLoss
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTY0OTI2NzQ4NzMyOA_c75ac75b-3119-466f-8fbd-4c8d3af190b6"
      unitRef="usd">0</us-gaap:CapitalizedContractCostImpairmentLoss>
    <us-gaap:CostOfSalesPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1NTU_538dd693-f34e-42b8-8245-528412e5dc4d">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cost of Revenue  (Exclusive of Depreciation and Amortization)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:112%"&gt;Many of our Value Added Services are facilitated by third-party service providers. Cost of revenue paid to these third-party service providers includes the cost of electronic interchange and payment processing-related services to support our payments services, the cost of credit reporting services for our tenant screening services, and various costs associated with our risk mitigation service providers. These third-party costs vary both in amount and as a percent of revenue for each Value Added Service offering. Cost of revenue also consists of personnel-related costs for our employees focused on customer service and the support of our operations (including salaries, performance-based compensation, benefits, and stock-based compensation), platform infrastructure costs (such as data center operations and hosting-related costs), and allocated shared and other costs. Cost of revenue excludes depreciation of property and equipment, amortization of capitalized software development costs and amortization of intangible assets.&lt;/span&gt;&lt;/div&gt;</us-gaap:CostOfSalesPolicyTextBlock>
    <us-gaap:SellingGeneralAndAdministrativeExpensesPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1ODI_eb07b7e4-ee74-4f89-99a1-d45c032b4ca1">Sales and Marketing Sales and marketing expense consists of personnel-related costs for our employees focused on sales and marketing (including salaries, sales commissions, performance-based compensation, benefits, and stock-based compensation), costs associated with sales and marketing activities, and allocated shared and other costs. Marketing activities include advertising, online lead generation, lead nurturing, customer and industry events, and the creation of industry-related content and collateral. We focus our sales and marketing efforts on generating awareness of our software solutions, creating sales leads, establishing and promoting our brands, and cultivating an educated community of successful and vocal customers. &lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;General and Administrative &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;General and administrative expense consists of personnel-related costs for employees in our executive, finance, information technology, human resources, legal, compliance, corporate development and administrative organizations (including salaries, performance-based compensation, benefits, and stock-based compensation). In addition, general and administrative expense includes fees for third-party professional services (including audit, legal, compliance, and tax services), transaction costs related to sales of subsidiary businesses, regulatory f, other corporate expenses, impairment of long-lived assets, and allocated shared costs.&lt;/span&gt;&lt;/div&gt;</us-gaap:SellingGeneralAndAdministrativeExpensesPolicyTextBlock>
    <us-gaap:AdvertisingExpense
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTk1NTg_3807acb3-eaf8-42ea-90a8-26ac40d687a2"
      unitRef="usd">9200000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTk1NjI_e8e9ef13-2663-45f6-b2f6-47191e50872b"
      unitRef="usd">9400000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMTk1Njk_55ab36e6-648c-44be-b0d1-dd6bad1802ec"
      unitRef="usd">7000000</us-gaap:AdvertisingExpense>
    <us-gaap:ResearchAndDevelopmentExpensePolicy
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1NzY_eb957fd0-e9c4-40db-9e00-c036a586d345">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Research and Product Development &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Research and product development expense consists of personnel-related costs for our employees focused on research and product development (including salaries, performance-based compensation, benefits, and stock-based compensation), fees for third-party development resources, and allocated shared and other costs. Our research and product development efforts are focused on expanding functionality and the ease of use of our existing software solutions by adding new core functionality, Value Added Services and other improvements, as well as developing new products and services. We capitalize our software development costs which meet the criteria for capitalization. Amortization of capitalized software development costs is included in depreciation and amortization expense.&lt;/span&gt;&lt;/div&gt;</us-gaap:ResearchAndDevelopmentExpensePolicy>
    <us-gaap:DepreciationDepletionAndAmortizationPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1Nzc_d101d12f-5a7b-4510-923a-cdff4b3d086d">Depreciation and Amortization Depreciation and amortization expense includes depreciation of property and equipment, amortization of capitalized software development costs, and amortization of intangible assets. We depreciate or amortize property and equipment, software development costs, and intangible assets over their expected useful lives on a straight-line basis, which approximates the pattern in which the economic benefits of the assets are consumed.</us-gaap:DepreciationDepletionAndAmortizationPolicyTextBlock>
    <us-gaap:CompensationRelatedCostsPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1NTE_a075d11f-6bc3-4714-9224-de4234d63954">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize stock-based compensation expense for restricted stock awards ("RSAs") and restricted stock units ("RSUs") with only service conditions on a straight-line basis over the requisite service period. For RSUs with both service and performance conditions (performance share units ("PSUs")), compensation cost is recorded on a graded-vesting method, if it is probable that the performance condition will be achieved. Adjustments to compensation expense are made each period based on changes in our estimate of the number of PSUs that are probable of vesting. PSUs will vest on the vesting date and upon achievement of the relevant performance metric once such calculation is finalized in accordance with our internal policies. We estimate a forfeiture rate to calculate our stock-based compensation expense for our stock-based awards.&lt;/span&gt;&lt;/div&gt;</us-gaap:CompensationRelatedCostsPolicyTextBlock>
    <us-gaap:IncomeTaxPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2NjI_15911b5a-94fd-49ed-92e5-63bde785a11f">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Income Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognize deferred tax liabilities and assets for the expected future tax consequences of temporary differences between the carrying amounts and the tax bases of assets and liabilities. Deferred income tax assets and liabilities are measured using enacted tax rates expected to apply to taxable income in the years in which those temporary differences are expected to be recovered or settled. The effect of a change in tax rates on deferred tax assets and liabilities is recognized in the Consolidated Statements of Operations in the period that includes the enactment date. A valuation allowance is recorded when it is more likely than not that some of the deferred tax assets will not be realized. In evaluating the need for a valuation allowance, we consider the weighting of all available positive and negative evidence, which includes, among other things, the nature, frequency and severity of current and cumulative taxable income or losses, future projections of profitability, and the duration of statutory carryforward periods.&lt;/span&gt;&lt;/div&gt;</us-gaap:IncomeTaxPolicyTextBlock>
    <us-gaap:EarningsPerSharePolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2NjQ_b176994d-6e05-47b2-b03c-341a701802fe">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Net (Loss) Income per Common Share&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Basic net (loss) income per share includes no dilution and is computed by dividing net (loss) income for the period by the weighted average number of common shares outstanding during the period. Diluted net income per share is computed by dividing net income for the period by the weighted average number of shares of common stock and potentially dilutive common stock outstanding during the period. The dilutive effect of outstanding options and equity incentive awards is reflected in diluted net income per share by application of the treasury stock method. The calculation of diluted net income per share excludes all anti-dilutive common shares.&lt;/span&gt;&lt;/div&gt;</us-gaap:EarningsPerSharePolicyTextBlock>
    <us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc1Mzk_249b7614-8f69-44a0-8b3d-846b4760d7ab">The following table presents a reconciliation of the weighted average number of shares of our Class A and Class B common stock used to compute net (loss) income per common share (in thousands):&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.367%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.256%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.256%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.261%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,015&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,583&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Weighted average unvested restricted shares subject to repurchase&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; basic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,578&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,264&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:15pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; basic&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,578&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,264&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Plus: Weighted average options, restricted stock units and restricted shares used to compute diluted net income per common share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,123&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,449&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted average common shares outstanding; diluted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,701&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,713&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock>
    <us-gaap:WeightedAverageNumberOfSharesIssuedBasic
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfMi0xLTEtMS0yMTc5NzQ_41f6601f-7a0a-4187-9e1f-91b5a296bdbc"
      unitRef="shares">35015000</us-gaap:WeightedAverageNumberOfSharesIssuedBasic>
    <us-gaap:WeightedAverageNumberOfSharesIssuedBasic
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfMi0zLTEtMS0yMTc5NzQ_eddcf4ff-17d7-4d7e-8184-55bd1c7a616d"
      unitRef="shares">34583000</us-gaap:WeightedAverageNumberOfSharesIssuedBasic>
    <us-gaap:WeightedAverageNumberOfSharesIssuedBasic
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfMi01LTEtMS0yMTc5NzQ_b0b4fdf6-4e83-4600-ad48-b969d74c2813"
      unitRef="shares">34269000</us-gaap:WeightedAverageNumberOfSharesIssuedBasic>
    <us-gaap:WeightedAverageNumberOfSharesRestrictedStock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfMy0xLTEtMS0yMTc5NzQ_0e530e33-61c7-4197-8e5a-c8a1bf28f400"
      unitRef="shares">5000</us-gaap:WeightedAverageNumberOfSharesRestrictedStock>
    <us-gaap:WeightedAverageNumberOfSharesRestrictedStock
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfMy0zLTEtMS0yMTc5NzQ_f934047d-6ae1-4fd6-84a4-6f10f6518ed5"
      unitRef="shares">5000</us-gaap:WeightedAverageNumberOfSharesRestrictedStock>
    <us-gaap:WeightedAverageNumberOfSharesRestrictedStock
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfMy01LTEtMS0yMTc5NzQ_071a40c3-c74f-4e48-bbbc-6ba0a950f2a3"
      unitRef="shares">5000</us-gaap:WeightedAverageNumberOfSharesRestrictedStock>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfNC0xLTEtMS0yMTc5NzQ_1a8afe7c-3d2a-475f-9067-bdc7ad4a3e48"
      unitRef="shares">35010000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfNC0xLTEtMS0yMTc5NzQ_c08ef803-6ee5-4b75-beaf-5c29f88e35b8"
      unitRef="shares">35010000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfNC0zLTEtMS0yMTc5NzQ_13483fc8-c33c-4a9a-83cc-022fbd7542b9"
      unitRef="shares">34578000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfNC01LTEtMS0yMTc5NzQ_f3cc556d-fdf8-4a97-bd18-c4a067a40932"
      unitRef="shares">34264000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfNi0xLTEtMS0yMTc5NzQ_77a12348-9ea1-4228-85c6-947c03f5dcda"
      unitRef="shares">35010000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfNi0zLTEtMS0yMTc5NzQ_da8b3f48-c637-4983-ac1a-5a10a52d3a3b"
      unitRef="shares">34578000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfNi01LTEtMS0yMTc5NzQ_8e94bec8-af27-4f2a-ab3c-db5dc0c161bf"
      unitRef="shares">34264000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfNy0xLTEtMS0yMTc5NzQ_16819f59-9b80-4f3c-bd21-66f9e7b4ef69"
      unitRef="shares">0</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfNy0zLTEtMS0yMTc5NzQ_7ee8d096-4bf7-4eb0-82ce-5aaefcf63e92"
      unitRef="shares">1123000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfNy01LTEtMS0yMTc5NzQ_5173ebf2-baee-4c73-8617-e8c9f460abfa"
      unitRef="shares">1449000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfOC0xLTEtMS0yMTc5NzQ_1a8afe7c-3d2a-475f-9067-bdc7ad4a3e48"
      unitRef="shares">35010000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfOC0xLTEtMS0yMTc5NzQ_c08ef803-6ee5-4b75-beaf-5c29f88e35b8"
      unitRef="shares">35010000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfOC0zLTEtMS0yMTc5NzQ_b26a4373-2459-4dd7-8230-13fc9e9aaf56"
      unitRef="shares">35701000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RhYmxlOjk4YWY4MDk0MjVjNjRiZGU5YzJmMTNlZDhlZTcyZjg0L3RhYmxlcmFuZ2U6OThhZjgwOTQyNWM2NGJkZTljMmYxM2VkOGVlNzJmODRfOC01LTEtMS0yMTc5NzQ_eba08212-35a8-416e-8f35-6f16922d661c"
      unitRef="shares">35713000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i42e890ec92ad4818ba2c3db7bc576b88_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjQ3MDM_73f377b0-ea36-4e4e-9e6e-bb8f1c8125f1"
      unitRef="shares">181000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="iaf98d5776b9d4d3ba062f45eb90c9192_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjQ3MTA_4943f1d7-9a7a-4304-a7db-80144db2e108"
      unitRef="shares">79000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84Mi9mcmFnOjM4ZjQxNTgxYjdkOTQ4MTlhMGUyNzhmM2I0ZWRlMjMyL3RleHRyZWdpb246MzhmNDE1ODFiN2Q5NDgxOWEwZTI3OGYzYjRlZGUyMzJfMjc2Mzg_02a62db4-d429-4413-85fe-9db27f84a11d">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Recent Accounting Pronouncements Not Yet Adopted&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;In October 2021, the Financial Accounting Standards Board ("FASB") issued Accounting Standards Update ("ASU") 2021-08, "&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:115%"&gt;Business Combinations (Topic 805): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;," which requires contract assets and contract liabilities acquired in a business combination to be recognized and measured by the acquirer on the acquisition date in accordance with ASC 606, "&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:115%"&gt;Revenue from Contracts with Customers&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;," as if the acquirer had originated the contracts. ASU 2021-08 is effective for fiscal years beginning after December 15, 2022, with early adoption permitted. We expect to adopt ASU 2021-08 on January 1, 2023.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:DisposalGroupsIncludingDiscontinuedOperationsDisclosureTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfMTMzOQ_395702c1-1325-4758-92d8-fd3201dd6cea">Sales of Subsidiary Businesses&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Sale of WegoWise&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In August 2022, we completed the sale of AppFolio Utility Management, Inc., dba WegoWise ("WegoWise"), a former wholly owned subsidiary of the Company that provided cloud-based utility analytics reporting software solutions to our customers. We sold WegoWise for $5.2 million (the &#x201c;WegoWise Transaction&#x201d;) and recognized a pre-tax gain on the sale of $4.2 million. Net assets divested are primarily comprised of intangible assets of $2.5 million and deferred revenue of $1.7 million. The gain on the sale is included within &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Other income, net&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; in our Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Sale of MyCase&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On September 30, 2020, we completed the sale of MyCase, Inc. ("MyCase"), a former wholly owned subsidiary that provided legal practice and case management software solutions to our legal customers, for $193.0&#160;million, consisting of $192.2&#160;million of cash proceeds, plus a $2.2&#160;million employee retention bonus pool funded by us, less cash divested of $0.8&#160;million and a preliminary working capital adjustment of $0.6&#160;million (the "MyCase Transaction"). The retention bonus pool was refundable to the Company to the extent that MyCase employees were terminated prior to the retention period, which was one year from the closing date of the MyCase Transaction. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognized a pre-tax gain on the sale of $188.0&#160;million on the MyCase Transaction, consisting of cash proceeds of $192.2&#160;million, less net assets divested of $4.6&#160;million, plus an adjustment in the employee retention bonus pool of $0.4&#160;million. Net assets divested is primarily comprised of capitalized software of $3.9&#160;million, deferred revenue of $2.8&#160;million and goodwill allocated to MyCase of $2.3&#160;million. The gain on the sale was recorded within &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Other income, net&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;. Income received during the twelve months ended December&#160;31, 2021 and 2020 in relation to the transition services provided by us to MyCase was $2.4&#160;million, and $1.1&#160;million respectively, and is included within &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Other income, net&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; in our Consolidated Statements of Operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:DisposalGroupsIncludingDiscontinuedOperationsDisclosureTextBlock>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration
      contextRef="if110068fe75d4b48b640bb97016e99d7_I20220831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfNTQ5NzU1ODE1NTM3_224f82f2-1aae-4a38-80ab-3f79908650a2"
      unitRef="usd">5200000</us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="ia6df958703f045058ba18ffc2a6b3cba_D20220831-20220831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfNTQ5NzU1ODE1NjE1_d2471bbd-76c2-4d6b-bddf-f59f3a3a6b6a"
      unitRef="usd">4200000</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationIntangibleAssets
      contextRef="if110068fe75d4b48b640bb97016e99d7_I20220831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfNTQ5NzU1ODE1Njg4_e2fe6be8-6a37-4078-9d58-56b6958bbc4d"
      unitRef="usd">2500000</us-gaap:DisposalGroupIncludingDiscontinuedOperationIntangibleAssets>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationDeferredRevenue
      contextRef="if110068fe75d4b48b640bb97016e99d7_I20220831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfNTQ5NzU1ODE1NzE2_526d5a7a-cc12-4917-91cb-7045d9e793f5"
      unitRef="usd">1700000</us-gaap:DisposalGroupIncludingDiscontinuedOperationDeferredRevenue>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration
      contextRef="ic9760a61c6d24d429a0398d5a042524d_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfMzA3_55d1c862-86c5-49c0-bf43-d351d5b91f34"
      unitRef="usd">193000000</us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration>
    <us-gaap:ProceedsFromDivestitureOfInterestInConsolidatedSubsidiaries
      contextRef="ibdcae5db1ba04c99a3a11408ce4f760d_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfMzI1_9d23c45e-567f-47b7-adc0-a556730783e8"
      unitRef="usd">192200000</us-gaap:ProceedsFromDivestitureOfInterestInConsolidatedSubsidiaries>
    <us-gaap:NoncashOrPartNoncashDivestitureAmountOfConsiderationReceived1
      contextRef="ibdcae5db1ba04c99a3a11408ce4f760d_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfMzUz_c8278765-3300-49a9-9ad0-550f842f4201"
      unitRef="usd">2200000</us-gaap:NoncashOrPartNoncashDivestitureAmountOfConsiderationReceived1>
    <us-gaap:CashDivestedFromDeconsolidation
      contextRef="ibdcae5db1ba04c99a3a11408ce4f760d_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfNDIy_d3c66ad0-f2af-4616-8c7d-07b6fd72636d"
      unitRef="usd">800000</us-gaap:CashDivestedFromDeconsolidation>
    <appf:DisposalGroupIncludingDiscontinuedOperationWorkingCapitalAdjustment
      contextRef="ibdcae5db1ba04c99a3a11408ce4f760d_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfNDcz_0694bc3d-fefd-4b23-ac69-573fb4dc1a3d"
      unitRef="usd">600000</appf:DisposalGroupIncludingDiscontinuedOperationWorkingCapitalAdjustment>
    <appf:DisposalGroupIncludingDiscontinuedOperationRetentionPeriod
      contextRef="ibdcae5db1ba04c99a3a11408ce4f760d_D20200930-20200930"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfNjUy_6981dd1b-5794-411a-a862-ea23937dab99">P1Y</appf:DisposalGroupIncludingDiscontinuedOperationRetentionPeriod>
    <us-gaap:DiscontinuedOperationGainLossFromDisposalOfDiscontinuedOperationBeforeIncomeTax
      contextRef="ibdcae5db1ba04c99a3a11408ce4f760d_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfNzQ5_0340a15f-92ed-4af0-ad61-74e375ce9e87"
      unitRef="usd">188000000</us-gaap:DiscontinuedOperationGainLossFromDisposalOfDiscontinuedOperationBeforeIncomeTax>
    <us-gaap:ProceedsFromDivestitureOfInterestInConsolidatedSubsidiaries
      contextRef="ibdcae5db1ba04c99a3a11408ce4f760d_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfODEw_19f727ee-590f-4083-8c86-17eca121de12"
      unitRef="usd">192200000</us-gaap:ProceedsFromDivestitureOfInterestInConsolidatedSubsidiaries>
    <us-gaap:AssetsOfDisposalGroupIncludingDiscontinuedOperation
      contextRef="ic9760a61c6d24d429a0398d5a042524d_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfODQy_e8ccd33c-1fc8-4bfe-b93c-b52f06457848"
      unitRef="usd">4600000</us-gaap:AssetsOfDisposalGroupIncludingDiscontinuedOperation>
    <appf:NoncashOrPartNoncashDivestitureAdjustmentToConsideration
      contextRef="ibdcae5db1ba04c99a3a11408ce4f760d_D20200930-20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfOTA1_acc49f7c-39aa-4699-9136-02dfe0852ab2"
      unitRef="usd">400000</appf:NoncashOrPartNoncashDivestitureAdjustmentToConsideration>
    <appf:DisposalGroupIncludingDiscontinuedOperationCapitalizedSoftware
      contextRef="ic9760a61c6d24d429a0398d5a042524d_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfOTc5_42901eb0-0d28-4ca1-ba0e-f5c7ce574f80"
      unitRef="usd">3900000</appf:DisposalGroupIncludingDiscontinuedOperationCapitalizedSoftware>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationDeferredRevenue
      contextRef="ic9760a61c6d24d429a0398d5a042524d_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfMTAwMw_4abb2464-e39b-4e0a-a767-36ddbabbf246"
      unitRef="usd">2800000</us-gaap:DisposalGroupIncludingDiscontinuedOperationDeferredRevenue>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationGoodwill1
      contextRef="ic9760a61c6d24d429a0398d5a042524d_I20200930"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfMTA0Mg_4ec01933-e388-4518-a511-ca4c7a67fe20"
      unitRef="usd">2300000</us-gaap:DisposalGroupIncludingDiscontinuedOperationGoodwill1>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationOtherIncome
      contextRef="ia84f26d8bc8248e0991a452a1527f6b0_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfMTIzNA_8b4873f2-3f44-43b0-b4ec-948339e73f3d"
      unitRef="usd">2400000</us-gaap:DisposalGroupIncludingDiscontinuedOperationOtherIncome>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationOtherIncome
      contextRef="ib222734d87fa4355a217690830270154_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84NS9mcmFnOjA3ZGI4NGE0NTY0ODQ0YzQ5MzVjOWJjYWY0YzQwNDU2L3RleHRyZWdpb246MDdkYjg0YTQ1NjQ4NDRjNDkzNWM5YmNhZjRjNDA0NTZfNTQ5NzU1ODE2MTg1_36b8ce0b-2897-4519-9cff-710af58d26bf"
      unitRef="usd">1100000</us-gaap:DisposalGroupIncludingDiscontinuedOperationOtherIncome>
    <us-gaap:InvestmentsInDebtAndMarketableEquitySecuritiesAndCertainTradingAssetsDisclosureTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RleHRyZWdpb246ODQ4Njk5MDdiMWIyNDM1OWFiN2IwYjA0OTk4YTc0ODZfMjMxOA_6f3027cf-82c1-43fa-a523-ed86965a3d03">Investment Securities and Fair Value Measurements&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Investment Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Investment securities classified as available-for-sale consisted of the following at December&#160;31, 2022 and 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.813%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Estimated Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,497&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(112)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,507&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(484)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,023&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;81,605&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,557)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;80,048&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;116,609&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,153)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;114,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:18pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.813%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Estimated Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,080&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(11)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(27)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,726&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;77,108&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(229)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;76,881&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;125,941&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(267)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;125,676&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:13pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;As of December&#160;31, 2022, the decline in fair value below amortized cost basis was not considered other than temporary as it is more likely than not we will hold the securities until maturity or recovery of the cost basis. No allowance for credit losses for available-for-sale investment securities was recorded as of December&#160;31, 2022 or 2021. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;The fair values of available-for-sale investment securities, by remaining contractual maturity, are as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:23pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.668%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.233%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.814%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Estimated Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Estimated Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Due in one year or less&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;90,822&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;89,297&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;64,627&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;64,600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Due after one year through three years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,787&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,161&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;61,314&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;61,076&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;116,609&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;114,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;125,941&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;125,676&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:13pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;During the years ended December&#160;31, 2022 and 2021, we had sales and maturities (which include calls) of investment securities, as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:23pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.813%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Realized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Realized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Proceeds from Sales &lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Proceeds from Maturities&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,250&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,635&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;87,883&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:7pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.813%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Realized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Realized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Proceeds from Sales&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Proceeds from Maturities&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,075&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,575&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43,198&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,704&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43,198&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;107,354&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;SecureDocs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In December 2021, we sold all of our interest in SecureDocs. A gain of $12.8&#160;million was recognized within &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Other income, net&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; in our Consolidated Statements of Operations, a portion of which relates to the recovery of a $2.0&#160;million note receivable which had been previously reserved. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Fair Value Measurements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Recurring Fair Value Measurements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables present our financial assets and liabilities measured at fair value on a recurring basis as of December&#160;31, 2022 and 2021 by level within the fair value hierarchy (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:17pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:96.231%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.375%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.906%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.553%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.906%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.553%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.907%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&#160;Fair&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,973&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,973&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment securities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,023&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,023&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;80,048&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;80,048&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;123,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,410&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;157,718&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:96.376%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.185%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.551%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.884%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.551%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.588%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&#160;Fair&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,105&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,105&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment securities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,726&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,726&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;76,881&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;76,881&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;82,986&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;48,795&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;131,781&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:2pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The carrying amounts of cash and cash equivalents, restricted cash, accounts receivable, accounts payable and accrued liabilities approximate their fair value because of the short maturity of these items. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;There were no changes to our valuation techniques used to measure asset and liability fair values on a recurring basis during the&#160;year ended December&#160;31, 2022. The valuation techniques for the financial assets in the tables above are as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Cash Equivalents&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At December&#160;31, 2022 and 2021, cash equivalents include cash invested in money market funds and treasury securities with a maturity of three months or less. Fair value is based on market prices for identical assets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Available-for-Sale Investment Securities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Fair value for our Level 1 investment securities is based on market prices for identical assets. Our Level 2 securities were priced by a pricing vendor. The pricing vendor utilizes the most recent observable market information in pricing these securities or, if specific prices are not available for these securities, other observable inputs like market transactions involving comparable securities are used.&lt;/span&gt;&lt;/div&gt;</us-gaap:InvestmentsInDebtAndMarketableEquitySecuritiesAndCertainTradingAssetsDisclosureTextBlock>
    <us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RleHRyZWdpb246ODQ4Njk5MDdiMWIyNDM1OWFiN2IwYjA0OTk4YTc0ODZfMjMxNg_46414334-6927-470f-a983-35584a0f95ef">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Investment securities classified as available-for-sale consisted of the following at December&#160;31, 2022 and 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.813%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Estimated Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,497&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(112)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,507&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(484)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,023&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;81,605&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,557)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;80,048&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;116,609&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,153)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;114,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:18pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.813%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Unrealized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Estimated Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,080&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(11)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(27)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,726&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;77,108&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(229)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;76,881&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;125,941&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(267)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;125,676&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss
      contextRef="i61b2085d442b40c58655e2af9839ee4e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfMi0xLTEtMS0yMTc5NzQ_6d4346a3-3c9e-455c-9875-c47a9662684c"
      unitRef="usd">17497000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i61b2085d442b40c58655e2af9839ee4e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfMi0zLTEtMS0yMTc5NzQ_d1018ffd-0cde-4d37-b8a5-a09e0af64b88"
      unitRef="usd">2000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i61b2085d442b40c58655e2af9839ee4e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfMi01LTEtMS0yMTc5NzQ_a0d783fa-9768-4432-8a2b-ac18d22ee687"
      unitRef="usd">112000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i61b2085d442b40c58655e2af9839ee4e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfMi03LTEtMS0yMTc5NzQ_69d38419-30a2-4759-9e41-e3d8699995fe"
      unitRef="usd">17387000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss
      contextRef="i7f8ca90760eb41d2a41f6e5f3a9905cd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfMy0xLTEtMS0yMTc5NzQ_ec917764-fb1e-42ce-b855-f41265bcd222"
      unitRef="usd">17507000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i7f8ca90760eb41d2a41f6e5f3a9905cd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfMy0zLTEtMS0yMTc5NzQ_f3a21dc5-548b-4600-b0a7-2b8797fb3a04"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i7f8ca90760eb41d2a41f6e5f3a9905cd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfMy01LTEtMS0yMTc5NzQ_3f0855eb-a8db-471b-8535-17f5eb35ed13"
      unitRef="usd">484000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i7f8ca90760eb41d2a41f6e5f3a9905cd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfMy03LTEtMS0yMTc5NzQ_242b59b8-3372-486e-afa1-a600130de766"
      unitRef="usd">17023000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss
      contextRef="i00d1212c729c43b6a49b2b18d98bf8c3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfNS0xLTEtMS0yMTc5NzQ_4f6c4d89-d619-495f-9810-97748bb5284d"
      unitRef="usd">81605000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i00d1212c729c43b6a49b2b18d98bf8c3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfNS0zLTEtMS0yMTc5NzQ_385e4c98-a488-4e4f-97e3-09deb0570bec"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i00d1212c729c43b6a49b2b18d98bf8c3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfNS01LTEtMS0yMTc5NzQ_9ed839cd-c673-488a-a86d-e7fe575b9d84"
      unitRef="usd">1557000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i00d1212c729c43b6a49b2b18d98bf8c3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfNS03LTEtMS0yMTc5NzQ_a8588031-7340-4976-86e8-250273e88815"
      unitRef="usd">80048000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfNi0xLTEtMS0yMTc5NzQ_b5d445ea-e35e-48c6-aced-51c1ac6b033c"
      unitRef="usd">116609000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfNi0zLTEtMS0yMTc5NzQ_f34d51f2-e1b3-4c89-9aee-ee318891ea65"
      unitRef="usd">2000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfNi01LTEtMS0yMTc5NzQ_c06de9d4-01d7-4dbb-9d27-9d0e6960fc80"
      unitRef="usd">2153000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjBkNjliNzNkY2RiYzRkMTliMjAyY2I5ODFlNzA0YTEwL3RhYmxlcmFuZ2U6MGQ2OWI3M2RjZGJjNGQxOWIyMDJjYjk4MWU3MDRhMTBfNi03LTEtMS0yMTc5NzQ_dda7872d-68c6-46ef-99db-53903cbb424a"
      unitRef="usd">114458000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss
      contextRef="if01d5763ed4f47248086fea019a83647_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfMi0xLTEtMS0yMTc5NzQ_15c7962b-9da5-4b1e-ae90-9599bcbb3110"
      unitRef="usd">29080000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="if01d5763ed4f47248086fea019a83647_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfMi0zLTEtMS0yMTc5NzQ_a3436d05-677f-4a81-9f92-c91a3b5e2789"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="if01d5763ed4f47248086fea019a83647_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfMi01LTEtMS0yMTc5NzQ_be756597-b381-49a0-bb51-c58c04b6632d"
      unitRef="usd">11000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="if01d5763ed4f47248086fea019a83647_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfMi03LTEtMS0yMTc5NzQ_624d2ce8-b759-4474-b72c-e4a1774cb676"
      unitRef="usd">29069000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss
      contextRef="icf3f13e25ab7429390c1f6cf393f8e67_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfMy0xLTEtMS0yMTc5NzQ_10f37b48-938a-4ec0-b00a-3378c85f05ff"
      unitRef="usd">19753000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="icf3f13e25ab7429390c1f6cf393f8e67_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfMy0zLTEtMS0yMTc5NzQ_7c534acf-f726-481d-b9cd-1c23548ed84d"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="icf3f13e25ab7429390c1f6cf393f8e67_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfMy01LTEtMS0yMTc5NzQ_a853bf44-5451-4664-9332-388736eac436"
      unitRef="usd">27000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="icf3f13e25ab7429390c1f6cf393f8e67_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfMy03LTEtMS0yMTc5NzQ_d5e2ac33-abab-4ced-bdfd-5a4594c61e2b"
      unitRef="usd">19726000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss
      contextRef="i7e8d95487c9a4a64b47ae42c9c2db1c1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfNC0xLTEtMS0yMTc5NzQ_f21d0289-872f-4eff-89f8-beb70d402aae"
      unitRef="usd">77108000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i7e8d95487c9a4a64b47ae42c9c2db1c1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfNC0zLTEtMS0yMTc5NzQ_8de7cd68-30c1-4903-ac70-ae9506fc6119"
      unitRef="usd">2000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i7e8d95487c9a4a64b47ae42c9c2db1c1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfNC01LTEtMS0yMTc5NzQ_44e26489-c3d6-473a-bc4f-edefd92102f8"
      unitRef="usd">229000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i7e8d95487c9a4a64b47ae42c9c2db1c1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfNC03LTEtMS0yMTc5NzQ_6d8295eb-0431-41c2-8a9b-ad309932f232"
      unitRef="usd">76881000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfNS0xLTEtMS0yMTc5NzQ_33b09811-1405-4d8c-8ac6-9e66c1f3e215"
      unitRef="usd">125941000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfNS0zLTEtMS0yMTc5NzQ_8e22c555-fca7-4461-a5ed-f65f3d1cf410"
      unitRef="usd">2000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfNS01LTEtMS0yMTc5NzQ_a6702687-4f30-4b91-8ab7-ae684f09f750"
      unitRef="usd">267000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmYyZTc0N2YxMjYwZjRkNDZhM2U5NTY1MTQ5ZmNkMDNmL3RhYmxlcmFuZ2U6ZjJlNzQ3ZjEyNjBmNGQ0NmEzZTk1NjUxNDlmY2QwM2ZfNS03LTEtMS0yMTc5NzQ_709c1e38-a2af-4563-bdba-9ef9dd65ef93"
      unitRef="usd">125676000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostAllowanceForCreditLossExcludingAccruedInterest
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RleHRyZWdpb246ODQ4Njk5MDdiMWIyNDM1OWFiN2IwYjA0OTk4YTc0ODZfNTQ5NzU1ODE2NzU5_133659eb-7497-4697-86ba-367e095056c8"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostAllowanceForCreditLossExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostAllowanceForCreditLossExcludingAccruedInterest
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RleHRyZWdpb246ODQ4Njk5MDdiMWIyNDM1OWFiN2IwYjA0OTk4YTc0ODZfNTQ5NzU1ODE2NzU5_e27695d3-494a-4350-9a77-c262b857e26d"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostAllowanceForCreditLossExcludingAccruedInterest>
    <us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RleHRyZWdpb246ODQ4Njk5MDdiMWIyNDM1OWFiN2IwYjA0OTk4YTc0ODZfMjI5Mw_7a0377dd-d4a8-4ef2-ab2b-b6883280e146">&lt;div style="margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;The fair values of available-for-sale investment securities, by remaining contractual maturity, are as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:23pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.668%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.233%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.814%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Estimated Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amortized Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Estimated Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Due in one year or less&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;90,822&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;89,297&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;64,627&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;64,600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Due after one year through three years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,787&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,161&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;61,314&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;61,076&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total available-for-sale investment securities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;116,609&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;114,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;125,941&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;125,676&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearAmortizedCost
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfMi0xLTEtMS0yMTc5NzQ_c7cadaa9-a0a9-4c69-aabe-edab8f71e576"
      unitRef="usd">90822000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearAmortizedCost>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfMi0zLTEtMS0yMTc5NzQ_67314c29-0d82-4187-848a-28673f0c1d51"
      unitRef="usd">89297000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearAmortizedCost
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfMi01LTEtMS0yMTc5NzQ_bbf21c67-8e78-47be-8b65-ae4725cf0244"
      unitRef="usd">64627000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearAmortizedCost>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfMi03LTEtMS0yMTc5NzQ_5f6c98fe-16bd-4335-92b6-b32f35bef518"
      unitRef="usd">64600000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsAmortizedCost
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfMy0xLTEtMS0yMTc5NzQ_fd0c47fa-7c85-46c5-bf35-d8b22ec26946"
      unitRef="usd">25787000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsAmortizedCost>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfMy0zLTEtMS0yMTc5NzQ_18dd1b61-a9cd-4397-9c64-04bc1644ae15"
      unitRef="usd">25161000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsAmortizedCost
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfMy01LTEtMS0yMTc5NzQ_dea4b1c5-f8e8-4d86-9c51-5b1f750fb09b"
      unitRef="usd">61314000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsAmortizedCost>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfMy03LTEtMS0yMTc5NzQ_5919352a-0f3e-496a-b655-d7d607d93e07"
      unitRef="usd">61076000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesAfterOneThroughFiveYearsFairValue>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfNC0xLTEtMS0yMTc5NzQ_a3ff9aef-97f6-48fd-9773-b8b34147bcd0"
      unitRef="usd">116609000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfNC0zLTEtMS0yMTc5NzQ_cab121c9-0a1d-46b9-bdaa-6f7e228fbfdc"
      unitRef="usd">114458000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfNC01LTEtMS0yMTc5NzQ_13855bd7-3bd1-4df3-82b1-6da67209411e"
      unitRef="usd">125941000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostExcludingAccruedInterestAfterAllowanceForCreditLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmEwM2NkODQ1MzViZjRhODk4OTkwZDMxNTBjOTNiZWVmL3RhYmxlcmFuZ2U6YTAzY2Q4NDUzNWJmNGE4OTg5OTBkMzE1MGM5M2JlZWZfNC03LTEtMS0yMTc5NzQ_e124a4e3-5db9-4c67-bc3d-626b20bcbbe4"
      unitRef="usd">125676000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:ScheduleOfRealizedGainLossTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RleHRyZWdpb246ODQ4Njk5MDdiMWIyNDM1OWFiN2IwYjA0OTk4YTc0ODZfMjMxMw_f885b906-f544-4b4e-b593-eaadf578a56c">&lt;div style="margin-bottom:6pt;margin-top:13pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;During the years ended December&#160;31, 2022 and 2021, we had sales and maturities (which include calls) of investment securities, as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:23pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.813%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Realized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Realized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Proceeds from Sales &lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Proceeds from Maturities&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,250&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,635&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;87,883&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:42.813%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.378%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.524%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.381%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Realized Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Realized Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Proceeds from Sales&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross Proceeds from Maturities&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,075&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,575&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43,198&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,704&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43,198&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;107,354&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfRealizedGainLossTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i149e4870322c4f52bf0ff68a99ce470e_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfMi0xLTEtMS0yMTc5NzQ_4633223a-73ba-446c-9411-2aee8fd9fe54"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i149e4870322c4f52bf0ff68a99ce470e_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfMi0zLTEtMS0yMTc5NzQ_4730d9cb-d3c3-4caa-a485-c64d9f0e75b6"
      unitRef="usd">3000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i149e4870322c4f52bf0ff68a99ce470e_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfMi01LTEtMS0yMTc5NzQ_b59c6b2c-6d6b-426c-8d27-8efd6dace838"
      unitRef="usd">994000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i149e4870322c4f52bf0ff68a99ce470e_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfMi03LTEtMS0yMTc5NzQ_31c75635-56be-4c75-88ff-78d1422edeee"
      unitRef="usd">28998000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i61fcc2c143394e90ad73f6571752b640_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfMy0xLTEtMS0yMTc5NzQ_a751154f-7a32-4e66-9556-745eebd38486"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i61fcc2c143394e90ad73f6571752b640_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfMy0zLTEtMS0yMTc5NzQ_a6201ed6-ac87-40fe-a471-9ca234f495d7"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i61fcc2c143394e90ad73f6571752b640_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfMy01LTEtMS0yMTc5NzQ_35788c23-d9a9-4bf3-8e87-a62c958e85aa"
      unitRef="usd">0</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i61fcc2c143394e90ad73f6571752b640_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfMy03LTEtMS0yMTc5NzQ_46bb00d3-1760-4992-8753-3fda89f3d3aa"
      unitRef="usd">2250000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i82835f22a1e04851901c85b736bf8e00_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfNS0xLTEtMS0yMTc5NzQ_75f9a4a7-a702-4082-9832-e5179b04948c"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i82835f22a1e04851901c85b736bf8e00_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfNS0zLTEtMS0yMTc5NzQ_b8a73ea9-82fb-47be-bbe2-9b39d1b579a1"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i82835f22a1e04851901c85b736bf8e00_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfNS01LTEtMS0yMTc5NzQ_38d05f22-9b8b-4649-9fdc-41bafdadeb2c"
      unitRef="usd">0</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i82835f22a1e04851901c85b736bf8e00_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfNS03LTEtMS0yMTc5NzQ_a7d1e1e3-9cbc-4215-a0d7-d087e4897b74"
      unitRef="usd">56635000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfNi0xLTEtMS0yMTc5NzQ_652de1a9-f68a-4912-a8b6-26330e9f568a"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfNi0zLTEtMS0yMTc5NzQ_2fad997a-dac0-422e-895d-4833dba78119"
      unitRef="usd">3000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfNi01LTEtMS0yMTc5NzQ_f6a9a52b-62ad-4637-823f-99c61065d50a"
      unitRef="usd">994000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjJhNmJlY2QwYjdhNDRiNmZhNGE3NzQwYWVlMzFmN2JjL3RhYmxlcmFuZ2U6MmE2YmVjZDBiN2E0NGI2ZmE0YTc3NDBhZWUzMWY3YmNfNi03LTEtMS0yMTc5NzQ_7fab6d41-03a7-46dc-9ee2-92887fca9568"
      unitRef="usd">87883000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="iad6d0c7eec3e4708a2327d5ef2290a64_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfMi0xLTEtMS0yMTc5NzQ_70c7dc41-62a3-4268-b9bc-feef07783053"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="iad6d0c7eec3e4708a2327d5ef2290a64_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfMi0zLTEtMS0yMTc5NzQ_7441a7fd-c394-4278-a6ea-d86d374bc9fa"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="iad6d0c7eec3e4708a2327d5ef2290a64_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfMi01LTEtMS0yMTc5NzQ_df694621-7c20-44b5-8671-22393dd9cd7f"
      unitRef="usd">0</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="iad6d0c7eec3e4708a2327d5ef2290a64_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfMi03LTEtMS0yMTc5NzQ_178d2ad1-8396-4d4c-a6cf-335cf085285f"
      unitRef="usd">39075000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="ieff32a01ebc7407eb642865666dc5568_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfMy0xLTEtMS0yMTc5NzQ_695d8fa7-c780-46a3-ac51-b6e7f0cca47b"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="ieff32a01ebc7407eb642865666dc5568_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfMy0zLTEtMS0yMTc5NzQ_c86f9126-2ce2-42d4-8bf3-2f27f6d91085"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="ieff32a01ebc7407eb642865666dc5568_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfMy01LTEtMS0yMTc5NzQ_15c86a96-5944-4fcb-8258-0a4a01778b2c"
      unitRef="usd">0</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="ieff32a01ebc7407eb642865666dc5568_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfMy03LTEtMS0yMTc5NzQ_781a93fe-825f-4726-91ac-0bfcaed6effd"
      unitRef="usd">11575000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i5af7913798e6470aafd7cadf5be776ed_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfNS0xLTEtMS0yMTc5NzQ_c1851fd0-7d64-4cef-b4bb-bb59d746b631"
      unitRef="usd">6000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i5af7913798e6470aafd7cadf5be776ed_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfNS0zLTEtMS0yMTc5NzQ_83fd095f-c63d-4843-8e09-955a64c85676"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i5af7913798e6470aafd7cadf5be776ed_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfNS01LTEtMS0yMTc5NzQ_8618e179-8c85-4cdb-ab58-8074612e3613"
      unitRef="usd">43198000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i5af7913798e6470aafd7cadf5be776ed_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfNS03LTEtMS0yMTc5NzQ_ff57399d-e6ca-4831-9b6c-f82d4f6e9d2f"
      unitRef="usd">56704000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfNy0xLTEtMS0yMTc5NzQ_a43fca3e-7235-4f42-aba1-dbf268150c75"
      unitRef="usd">6000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfNy0zLTEtMS0yMTc5NzQ_a1908598-c5c6-41e5-b2dc-d23cfcf10afe"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfNy01LTEtMS0yMTc5NzQ_ce7e5872-a555-4a2a-97ce-1cad3ed3dfea"
      unitRef="usd">43198000</us-gaap:ProceedsFromSaleOfAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmMzZDNjM2IyMGYxNzRjOWQ5Njc1NjAyYzVkNzRlN2U2L3RhYmxlcmFuZ2U6YzNkM2MzYjIwZjE3NGM5ZDk2NzU2MDJjNWQ3NGU3ZTZfNy03LTEtMS0yMTc5NzQ_23dfa7d2-983c-4f0f-9687-1a60f2d3f96f"
      unitRef="usd">107354000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:EquityMethodInvestmentRealizedGainLossOnDisposal
      contextRef="ie8b81428d416445f86a40fc4eb5b7a20_D20211220-20211220"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RleHRyZWdpb246ODQ4Njk5MDdiMWIyNDM1OWFiN2IwYjA0OTk4YTc0ODZfNjA2_88d9d7ad-04ca-45cf-b99d-5137e2c4580a"
      unitRef="usd">12800000</us-gaap:EquityMethodInvestmentRealizedGainLossOnDisposal>
    <appf:EquityMethodInvestmentRealizedGainFromRecoveryOfNoteReceivable
      contextRef="ic22f79506ab24f95b4dc8c6f8452a9a9_D20211220-20211220"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RleHRyZWdpb246ODQ4Njk5MDdiMWIyNDM1OWFiN2IwYjA0OTk4YTc0ODZfNzQz_389136e1-630b-45b9-b7d1-c581ea636561"
      unitRef="usd">2000000</appf:EquityMethodInvestmentRealizedGainFromRecoveryOfNoteReceivable>
    <us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RleHRyZWdpb246ODQ4Njk5MDdiMWIyNDM1OWFiN2IwYjA0OTk4YTc0ODZfMjI5NQ_991658cf-4994-4e69-9618-1079e8b2ff85">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables present our financial assets and liabilities measured at fair value on a recurring basis as of December&#160;31, 2022 and 2021 by level within the fair value hierarchy (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:17pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:96.231%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.375%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.906%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.553%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.906%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.553%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.907%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&#160;Fair&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,973&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,973&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment securities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,023&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,023&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;80,048&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;80,048&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;123,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,410&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;157,718&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:96.376%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.185%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.551%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.884%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.551%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.588%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&#160;Fair&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,105&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,105&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment securities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,726&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,726&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;76,881&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;76,881&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;82,986&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;48,795&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;131,781&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock>
    <us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RleHRyZWdpb246ODQ4Njk5MDdiMWIyNDM1OWFiN2IwYjA0OTk4YTc0ODZfMjMwNQ_044a44d9-cd74-4ac8-9e9e-19b2130238a5">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables present our financial assets and liabilities measured at fair value on a recurring basis as of December&#160;31, 2022 and 2021 by level within the fair value hierarchy (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:17pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:96.231%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.375%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.906%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.553%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.906%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.553%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.907%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&#160;Fair&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,973&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,973&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment securities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,023&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,023&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;80,048&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;80,048&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;123,308&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,410&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;157,718&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:7pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:96.376%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.441%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.185%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.551%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.884%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.551%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.588%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;1&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Level&#160;2&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&#160;Fair&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash equivalents:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market funds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,105&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,105&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Available-for-sale investment securities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,726&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,726&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;76,881&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;76,881&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;82,986&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;48,795&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;131,781&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisTextBlock>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i1e53e7f2321a43ac8324d46a1ca618fc_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfMy0xLTEtMS0yMTc5NzQ_2586f9da-7dd9-47a4-aea0-03e731498013"
      unitRef="usd">41973000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i3685fdaca9204a32b51d5f9f9c845aa2_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfMy0zLTEtMS0yMTc5NzQ_baeada32-5389-49b7-9710-739d9398bf25"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i46e46e6ff4d94b01be8713a4b60aaac2_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfMy03LTEtMS0yMTc5NzQ_54981cab-4e44-436a-9c4a-548dc2e46fb8"
      unitRef="usd">41973000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i9131f18b28204079b455032539212a2c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfNC0xLTEtMS0yMTc5NzQ_e62fdc9a-1ac9-459f-bf6e-0120fce32df7"
      unitRef="usd">1287000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="ic9a8da91339e4da187d242302fcd6513_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfNC0zLTEtMS0yMTc5NzQ_e7b0b5e2-4b86-4dc4-9bf6-89632f53e885"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i5f41208233a9403ea87d42c17bd01363_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfNC03LTEtMS0yMTc5NzQ_13d2e527-b2e6-48a8-bfc3-f4c53e24252d"
      unitRef="usd">1287000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i389895b9e53948bea40f205c242ff7ac_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfNi0xLTEtMS0yMTc5NzQ_a13a22c8-d371-46f4-93b7-95e9083c1d8d"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i3e299d58abcc488891e87cae9711dd59_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfNi0zLTEtMS0yMTc5NzQ_caa26835-2261-42fa-9d4b-410e24ad392c"
      unitRef="usd">17387000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i0685e42103d74f0ba426949909167ddf_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfNi03LTEtMS0yMTc5NzQ_83b762a6-dbe4-4c55-9e88-ca9218c90d2d"
      unitRef="usd">17387000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="ia8809cf425f545ba8a8857e373b7c14e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfNy0xLTEtMS0yMTc5NzQ_7ba15179-d2c9-44a9-9617-30a066dff766"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i263a06f740d84086a3f2a099072cfd23_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfNy0zLTEtMS0yMTc5NzQ_af214ed3-c395-4b2a-9586-9c31d41c5796"
      unitRef="usd">17023000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="ic234cd04b25d457285e4067e25da7865_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfNy03LTEtMS0yMTc5NzQ_4ed3a416-b5ca-4a37-a02c-25d353178be4"
      unitRef="usd">17023000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="ibf3f1dfcdd36491f92555a9fd04130dd_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfOS0xLTEtMS0yMTc5NzQ_716d3e3c-fb98-40e8-88ce-bcea075db902"
      unitRef="usd">80048000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i8f166cbec7a741f2af78691bb4318c39_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfOS0zLTEtMS0yMTc5NzQ_743beaa0-7489-4754-9b07-c737644f8329"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="if80d0714f9a44509b09a041e5a9ce457_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfOS03LTEtMS0yMTc5NzQ_e9d443c7-31c9-4bc1-93ef-09913aee36e2"
      unitRef="usd">80048000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i46c0c512ad564b13bc453d6174225575_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfMTAtMS0xLTEtMjE3OTc0_610177ba-bf79-4518-b21d-ebd9023af5ac"
      unitRef="usd">123308000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="id8be1ef55771495c9ec086438a314f14_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfMTAtMy0xLTEtMjE3OTc0_95029c08-cb4c-4a6e-84ac-457d7faf0abe"
      unitRef="usd">34410000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="id80c0e0114054dc1a8eebaf40a3d1c5e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOjZhODU1NDJlNDM4NzQ4MmU5NTU2NzMzODc3MzRiNjVjL3RhYmxlcmFuZ2U6NmE4NTU0MmU0Mzg3NDgyZTk1NTY3MzM4NzczNGI2NWNfMTAtNy0xLTEtMjE3OTc0_c4cfe69a-d4c5-4c22-a318-0bced1db00e3"
      unitRef="usd">157718000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i575fec453d8f4f789594419beaf11c93_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfMy0xLTEtMS0yMTc5NzQ_f3880f58-9a28-4fca-b1b6-e327a5b59819"
      unitRef="usd">6105000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i54355cae8d234fb3b782a36ce673949b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfMy0zLTEtMS0yMTc5NzQ_23a36c67-a582-40a4-9859-52e26ea82c95"
      unitRef="usd">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="iea17d08eda1f4b15a75837184f3ca728_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfMy03LTEtMS0yMTc5NzQ_dd8bbafd-c999-4dc0-b6fe-9036293dc9c2"
      unitRef="usd">6105000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i5acfa2c079ed448a8e897076310d2509_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfNi0xLTEtMS0yMTc5NzQ_3bed3e8a-27b0-4924-80b4-301092932a76"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="ida37d7a661ec4dec8675542b1743c5b3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfNi0zLTEtMS0yMTc5NzQ_09beac95-c6bf-405e-ab3f-65130e800d38"
      unitRef="usd">29069000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i7b975d2da5cb4bbcabd869f08af25731_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfNi03LTEtMS0yMTc5NzQ_ea15df79-03a1-4db0-ae11-145c62b39118"
      unitRef="usd">29069000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i8e868cbf5b5c4b42b271ad0cbd218676_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfNy0xLTEtMS0yMTc5NzQ_01add27f-55e5-447e-aa39-8d35e33b85a6"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i05fa8b9e88df4e3a8a6e3ff3b42feb5d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfNy0zLTEtMS0yMTc5NzQ_7280f82d-61e1-4b2a-a3a0-dc98b8c72319"
      unitRef="usd">19726000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i6bbaa0bba5294d7cb1d842b9d48af656_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfNy03LTEtMS0yMTc5NzQ_c1d1708a-07ff-4e31-920d-098f5e8de650"
      unitRef="usd">19726000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="ie9cdfd4ed93d46a48cacc6f912d7d588_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfOS0xLTEtMS0yMTc5NzQ_cdfc9226-9cd8-4927-b652-1272ffdffdd4"
      unitRef="usd">76881000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i128f91c5735f4ce399db8b976cff509e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfOS0zLTEtMS0yMTc5NzQ_44661ae2-4f82-413f-9912-72b75d47f04e"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest
      contextRef="i55b56071b35c456dbdfec0d3349c9bf4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfOS03LTEtMS0yMTc5NzQ_b57d7bb5-1247-4db3-b7ac-552411314a50"
      unitRef="usd">76881000</us-gaap:DebtSecuritiesAvailableForSaleExcludingAccruedInterest>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i81af3d00c7ed496094d2c039abb49c9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfMTAtMS0xLTEtMjE3OTc0_bb165cf5-9d79-4f20-b341-435d0a7c00af"
      unitRef="usd">82986000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i5124604a29294e1789760ebf08fa5d64_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfMTAtMy0xLTEtMjE3OTc0_e9dfba96-362e-432c-814c-6f2d2ba742fc"
      unitRef="usd">48795000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="ie0af51c63ac74252901ff67d861b8d85_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl84OC9mcmFnOjg0ODY5OTA3YjFiMjQzNTlhYjdiMGIwNDk5OGE3NDg2L3RhYmxlOmQyN2M5OWIzMmZkMDQ4YjZiNDFhYjkwODljYTMyZjIwL3RhYmxlcmFuZ2U6ZDI3Yzk5YjMyZmQwNDhiNmI0MWFiOTA4OWNhMzJmMjBfMTAtNy0xLTEtMjE3OTc0_563816ce-4b7d-442e-9e70-f6f5bb328127"
      unitRef="usd">131781000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RleHRyZWdpb246Y2NlN2ZhZDA0MjAxNDg3Njk1OGE4OGNhODUzOGM2MDJfMjM3_b3395df2-a330-4f1d-b338-58a1e7563b64">Property and Equipment, net&lt;div style="margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property and equipment, net consists of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.349%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,529&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,884&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,747&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,167&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Office equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,285&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;22,679&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Construction in process&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;544&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,227&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross property and equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,245&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,242&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Accumulated depreciation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(13,135)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(10,763)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total property and equipment, net&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;30,479&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:7pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Depreciation expense for property and equipment totaled $5.1 million, $4.7 million, and $4.0 million for the years ended December&#160;31, 2022, 2021 and 2020, respectively. During the year ended December&#160;31, 2022, we recorded an impairment of $4.4&#160;million related to property and equipment associated with our leased office spaces. For additional information, see Note 9, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Leases&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;.&lt;/span&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i25a8a96518f744af8ac18a86e779f779_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfMi0xLTEtMS0yMTc5NzQ_3e0791c5-41a7-4bcc-9d29-2e098f4848d5"
      unitRef="usd">5529000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="idfcd30e248f0465fa9f32cb470950835_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfMi0zLTEtMS0yMTc5NzQ_147b3dc4-9cb6-4fce-b7bb-e3ca21a772e8"
      unitRef="usd">4884000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i44dc401ff6c64b9f85e2522dbb18fed0_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfMy0xLTEtMS0yMTc5NzQ_bc5cac43-7b93-4d04-a5d1-204dd88d7b38"
      unitRef="usd">5747000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i8ab322f90bf3426091055446bbce7902_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfMy0zLTEtMS0yMTc5NzQ_85b3e325-5b00-4bf0-b491-debbf179bb92"
      unitRef="usd">5167000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ibaaddf346e524ee3b2d1a864d013fa23_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfNC0xLTEtMS0yMTc5NzQ_03cb2f72-7890-4699-a299-29447208f612"
      unitRef="usd">3800000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ia17e168941364d48878b27ca5083efa4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfNC0zLTEtMS0yMTc5NzQ_07197508-96d5-4f55-8dca-689c5140eb3e"
      unitRef="usd">3285000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="if0a43cb3ab6f44099ebe2839d94e00b2_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfNS0xLTEtMS0yMTc5NzQ_05a35846-dafc-484b-8ba7-fb418cbcf344"
      unitRef="usd">23625000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i65b4976aadea4041bb36bc5c4b54506f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfNS0zLTEtMS0yMTc5NzQ_91c5cd24-3235-4acd-b32d-b87f311af230"
      unitRef="usd">22679000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i715c49cce98b48fc8c7ec14c9b6639a1_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfNi0xLTEtMS0yMTc5NzQ_b152f9b2-6cfa-41a2-b784-70e025289160"
      unitRef="usd">544000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i79aeea456bd1451faff7dbd02d523f06_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfNi0zLTEtMS0yMTc5NzQ_cd96cbc3-c7f0-439b-9e8f-8e71d6a166ec"
      unitRef="usd">5227000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfNy0xLTEtMS0yMTc5NzQ_764b6468-9c15-4fd7-8cb0-232dc8be4f83"
      unitRef="usd">39245000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfNy0zLTEtMS0yMTc5NzQ_7524d5e8-d278-4a6e-a5e6-47cdaf945440"
      unitRef="usd">41242000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfOC0xLTEtMS0yMTc5NzQ_cd027aff-ee12-4290-a670-6951f76c7bc1"
      unitRef="usd">13135000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfOC0zLTEtMS0yMTc5NzQ_3d3d357d-66b6-4d70-baaf-d01144d1064e"
      unitRef="usd">10763000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfOS0xLTEtMS0yMTc5NzQ_5ccdb306-888f-4b0a-8023-3da51d7d1eb8"
      unitRef="usd">26110000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RhYmxlOjhjN2ZjMDkxZmMwNjQ5YWNiOTM4MjYyMjAxMGU3MTcxL3RhYmxlcmFuZ2U6OGM3ZmMwOTFmYzA2NDlhY2I5MzgyNjIyMDEwZTcxNzFfOS0zLTEtMS0yMTc5NzQ_8e43f52c-7a81-482d-9b6c-fe3dcf605ff0"
      unitRef="usd">30479000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:Depreciation
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RleHRyZWdpb246Y2NlN2ZhZDA0MjAxNDg3Njk1OGE4OGNhODUzOGM2MDJfMTY0_9b9597f0-f418-438e-b260-825bca666162"
      unitRef="usd">5100000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RleHRyZWdpb246Y2NlN2ZhZDA0MjAxNDg3Njk1OGE4OGNhODUzOGM2MDJfMTY4_51f0d533-ce39-4023-b829-83520bee24f7"
      unitRef="usd">4700000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RleHRyZWdpb246Y2NlN2ZhZDA0MjAxNDg3Njk1OGE4OGNhODUzOGM2MDJfMTc2_c18abb3f-2b53-4850-8c51-ffaf477299f5"
      unitRef="usd">4000000</us-gaap:Depreciation>
    <us-gaap:ImpairmentExcludingLessorAssetUnderOperatingLease
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85MS9mcmFnOmNjZTdmYWQwNDIwMTQ4NzY5NThhODhjYTg1MzhjNjAyL3RleHRyZWdpb246Y2NlN2ZhZDA0MjAxNDg3Njk1OGE4OGNhODUzOGM2MDJfMzg0ODI5MDY5NzU4MQ_09153294-4eea-4eb8-bdcb-fe8b86d1c43c"
      unitRef="usd">4400000</us-gaap:ImpairmentExcludingLessorAssetUnderOperatingLease>
    <us-gaap:ResearchDevelopmentAndComputerSoftwareDisclosureTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfNjE4_1c846849-d016-40c2-991d-b9f23bfea9bf">Capitalized Software Development Costs, net&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalized software development costs, net were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.617%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized software development costs, gross&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;129,749&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;115,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Accumulated amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(94,434)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(74,165)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized software development costs, net&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,315&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,212&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:7pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalized software development costs were $17.7 million, $27.2 million and $27.3 million for the years ended December&#160;31, 2022, 2021 and 2020, respectively. Amortization expense with respect to software development costs totaled $23.6 million, $21.5 million and $17.9 million for the years ended December&#160;31, 2022, 2021 and 2020, respectively. During the years ended December&#160;31, 2022 and 2021, we disposed of $3.3&#160;million and $8.8&#160;million, respectively, of fully amortized capitalized software development costs. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future amortization expense with respect to capitalized software development costs is estimated as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.258%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Years Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,237&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,407&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total amortization expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,315&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ResearchDevelopmentAndComputerSoftwareDisclosureTextBlock>
    <appf:ScheduleOfCapitalizedComputerSoftwareTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfNjE2_41b6ffa8-abc6-4d4a-8ed8-3fb852815744">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalized software development costs, net were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.617%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized software development costs, gross&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;129,749&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;115,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: Accumulated amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(94,434)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(74,165)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized software development costs, net&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,315&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,212&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</appf:ScheduleOfCapitalizedComputerSoftwareTableTextBlock>
    <us-gaap:CapitalizedComputerSoftwareGross
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOjQwMTkwZjAxNTg4MDRjODk4N2NmMGYxMGI1ZTJiZmZkL3RhYmxlcmFuZ2U6NDAxOTBmMDE1ODgwNGM4OTg3Y2YwZjEwYjVlMmJmZmRfMi0yLTEtMS0yMTc5NzQ_0eb411a7-622b-4c2a-86b6-7b6f16687ac4"
      unitRef="usd">129749000</us-gaap:CapitalizedComputerSoftwareGross>
    <us-gaap:CapitalizedComputerSoftwareGross
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOjQwMTkwZjAxNTg4MDRjODk4N2NmMGYxMGI1ZTJiZmZkL3RhYmxlcmFuZ2U6NDAxOTBmMDE1ODgwNGM4OTg3Y2YwZjEwYjVlMmJmZmRfMi00LTEtMS0yMTc5NzQ_ad608331-a644-44c5-9d6a-7d69548d036c"
      unitRef="usd">115377000</us-gaap:CapitalizedComputerSoftwareGross>
    <us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOjQwMTkwZjAxNTg4MDRjODk4N2NmMGYxMGI1ZTJiZmZkL3RhYmxlcmFuZ2U6NDAxOTBmMDE1ODgwNGM4OTg3Y2YwZjEwYjVlMmJmZmRfMy0yLTEtMS0yMTc5NzQ_e7bfed0d-2ea1-40c3-a6a1-546a0166e761"
      unitRef="usd">94434000</us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization>
    <us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOjQwMTkwZjAxNTg4MDRjODk4N2NmMGYxMGI1ZTJiZmZkL3RhYmxlcmFuZ2U6NDAxOTBmMDE1ODgwNGM4OTg3Y2YwZjEwYjVlMmJmZmRfMy00LTEtMS0yMTc5NzQ_10b6e865-65b2-4ca5-8ae9-a3e8f14be6c5"
      unitRef="usd">74165000</us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOjQwMTkwZjAxNTg4MDRjODk4N2NmMGYxMGI1ZTJiZmZkL3RhYmxlcmFuZ2U6NDAxOTBmMDE1ODgwNGM4OTg3Y2YwZjEwYjVlMmJmZmRfNC0yLTEtMS0yMTc5NzQ_9e495a14-811f-497a-bcec-ef35f3b8256d"
      unitRef="usd">35315000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOjQwMTkwZjAxNTg4MDRjODk4N2NmMGYxMGI1ZTJiZmZkL3RhYmxlcmFuZ2U6NDAxOTBmMDE1ODgwNGM4OTg3Y2YwZjEwYjVlMmJmZmRfNC00LTEtMS0yMTc5NzQ_0ffb3519-98f6-4370-85e8-b671cf18a5da"
      unitRef="usd">41212000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:CapitalizedComputerSoftwareAdditions
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfMTc0_0024f256-82ac-48f9-88cc-97f8f2caa6e1"
      unitRef="usd">17700000</us-gaap:CapitalizedComputerSoftwareAdditions>
    <us-gaap:CapitalizedComputerSoftwareAdditions
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfMTc4_891ca748-ad81-4e8f-b9b0-68969b20245f"
      unitRef="usd">27200000</us-gaap:CapitalizedComputerSoftwareAdditions>
    <us-gaap:CapitalizedComputerSoftwareAdditions
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfMTg1_9c1b10da-ca39-4c74-9f2d-9c0d026185f5"
      unitRef="usd">27300000</us-gaap:CapitalizedComputerSoftwareAdditions>
    <us-gaap:CapitalizedComputerSoftwareAmortization1
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfMzA5_47e8595e-30d1-498a-95ab-42e8d57ac6d8"
      unitRef="usd">23600000</us-gaap:CapitalizedComputerSoftwareAmortization1>
    <us-gaap:CapitalizedComputerSoftwareAmortization1
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfMzEz_8ee900d6-7bca-4cbb-87d4-50d6747d67a3"
      unitRef="usd">21500000</us-gaap:CapitalizedComputerSoftwareAmortization1>
    <us-gaap:CapitalizedComputerSoftwareAmortization1
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfMzIw_8805d24b-e727-4a3b-9a84-a975a2900a1a"
      unitRef="usd">17900000</us-gaap:CapitalizedComputerSoftwareAmortization1>
    <appf:CapitalizedComputerSoftwareDisposals
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfMjE5OTAyMzI1NjQzMA_e30f784e-589a-4678-b29d-319afb4680a0"
      unitRef="usd">3300000</appf:CapitalizedComputerSoftwareDisposals>
    <appf:CapitalizedComputerSoftwareDisposals
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfNDEz_387c9e13-3b09-45f7-9f64-ed5f774b740b"
      unitRef="usd">8800000</appf:CapitalizedComputerSoftwareDisposals>
    <appf:ScheduleOfCapitalizedComputerSoftwareFutureAmortizationExpenseTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RleHRyZWdpb246NGViMGZhM2FkOWYyNGYyOTlhMjgyZjA5YmZlMWM1MDJfNjE1_6d46be82-5b2b-49fd-900c-5a685c4bf047">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future amortization expense with respect to capitalized software development costs is estimated as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:84.258%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.810%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Years Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,237&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,407&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total amortization expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,315&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</appf:ScheduleOfCapitalizedComputerSoftwareFutureAmortizationExpenseTableTextBlock>
    <appf:CapitalizedComputerSoftwareAmortizationExpenseYearOne
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOmVlMDgxMGJhMWVlMjQwYzc4MzAxZGJkMTQzM2E3MjgyL3RhYmxlcmFuZ2U6ZWUwODEwYmExZWUyNDBjNzgzMDFkYmQxNDMzYTcyODJfMS0yLTEtMS0yMTc5NzQ_df245768-db52-4d90-b174-4029ad4c3c27"
      unitRef="usd">19237000</appf:CapitalizedComputerSoftwareAmortizationExpenseYearOne>
    <appf:CapitalizedComputerSoftwareAmortizationExpenseYearTwo
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOmVlMDgxMGJhMWVlMjQwYzc4MzAxZGJkMTQzM2E3MjgyL3RhYmxlcmFuZ2U6ZWUwODEwYmExZWUyNDBjNzgzMDFkYmQxNDMzYTcyODJfMi0yLTEtMS0yMTc5NzQ_6e9e6e35-59a4-4d70-845f-84db8e2166fa"
      unitRef="usd">11407000</appf:CapitalizedComputerSoftwareAmortizationExpenseYearTwo>
    <appf:CapitalizedComputerSoftwareAmortizationExpenseYearThree
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOmVlMDgxMGJhMWVlMjQwYzc4MzAxZGJkMTQzM2E3MjgyL3RhYmxlcmFuZ2U6ZWUwODEwYmExZWUyNDBjNzgzMDFkYmQxNDMzYTcyODJfMy0yLTEtMS0yMTc5NzQ_2f23d98d-9c4b-4201-807e-0ada92539a7e"
      unitRef="usd">4377000</appf:CapitalizedComputerSoftwareAmortizationExpenseYearThree>
    <appf:CapitalizedComputerSoftwareAmortizationExpenseYearFour
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOmVlMDgxMGJhMWVlMjQwYzc4MzAxZGJkMTQzM2E3MjgyL3RhYmxlcmFuZ2U6ZWUwODEwYmExZWUyNDBjNzgzMDFkYmQxNDMzYTcyODJfNC0yLTEtMS0yMTc5NzQ_213ce702-87c1-4600-b52e-8724e1060486"
      unitRef="usd">294000</appf:CapitalizedComputerSoftwareAmortizationExpenseYearFour>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85NC9mcmFnOjRlYjBmYTNhZDlmMjRmMjk5YTI4MmYwOWJmZTFjNTAyL3RhYmxlOmVlMDgxMGJhMWVlMjQwYzc4MzAxZGJkMTQzM2E3MjgyL3RhYmxlcmFuZ2U6ZWUwODEwYmExZWUyNDBjNzgzMDFkYmQxNDMzYTcyODJfNS0yLTEtMS0yMTc5NzQ_0b5e2129-87fa-42b4-b367-5b234493ed5d"
      unitRef="usd">35315000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RleHRyZWdpb246ODk3OWNkNDA5NmU3NGQwZGI5M2VkOWFjNDQ4YWRjZjdfMzU4_1f0a92fc-d124-4545-a424-6b5ddc336433">Intangible Assets, net and Goodwill&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets, net consisted of the following (in thousands, except years):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:3pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:32.233%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.851%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross&#160;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Net&#160;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted&lt;br/&gt;Average&#160;Useful&lt;br/&gt;Life in Years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,670&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,448)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;222&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Database&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,884)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,826&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Technology&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,539&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6,539)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks and trade names&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,520&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,211)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;309&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Partner relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;680&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(680)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,340&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5,872)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,468&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Domain names&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;90&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(82)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Patents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;252&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(252)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total intangible assets, net&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;22,801&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(17,968)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,833&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4.7&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:32.089%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.995%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross&#160;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Net&#160;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted&lt;br/&gt;Average&#160;Useful&lt;br/&gt;Life in Years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,840&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,006)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;834&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Database&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,330&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,620)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Technology&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,539&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5,107)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,432&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks and trade names&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,890&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,128)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;762&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Partner relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;680&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(680)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,400&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,444)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,956&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Domain names&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;90&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(75)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Patents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;252&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(250)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total intangible assets, net&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,021&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(16,310)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,711&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;During the year ended December&#160;31, 2022, we divested intangible assets of $2.5 million as part of the WegoWise Transaction. For additional information see Note 3, &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Sales of Subsidiary Businesses&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;. &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Amortization expense with respect to intangible assets totaled $4.4 million, $4.6 million and $4.9 million for the years ended December&#160;31, 2022, 2021 and 2020, respectively. Future amortization expense with respect to intangible assets is estimated as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:3pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:85.681%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.805%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.114%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Years Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,476&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;473&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;471&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;471&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2027&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;471&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;471&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,833&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:7pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;Our goodwill balance is solely attributed to acquisitions. The change in the carrying amount of goodwill during the year ended December&#160;31, 2022 is as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:7pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:85.681%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.805%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.114%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Goodwill at December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,147&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Goodwill attributed to WegoWise Transaction&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(87)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Goodwill at December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,060&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock>
    <us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RleHRyZWdpb246ODk3OWNkNDA5NmU3NGQwZGI5M2VkOWFjNDQ4YWRjZjdfMzQ2_dc497ea4-5e0c-4ea9-8bc8-6d80c80af8de">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets, net consisted of the following (in thousands, except years):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:3pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:32.233%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.851%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross&#160;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Net&#160;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted&lt;br/&gt;Average&#160;Useful&lt;br/&gt;Life in Years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,670&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,448)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;222&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Database&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,884)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,826&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Technology&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,539&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6,539)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks and trade names&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,520&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,211)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;309&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Partner relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;680&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(680)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,340&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5,872)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,468&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Domain names&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;90&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(82)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Patents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;252&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(252)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total intangible assets, net&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;22,801&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(17,968)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,833&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4.7&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:32.089%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.518%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.995%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="21" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Gross&#160;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Net&#160;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted&lt;br/&gt;Average&#160;Useful&lt;br/&gt;Life in Years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,840&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,006)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;834&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Database&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,330&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,620)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Technology&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,539&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5,107)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,432&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks and trade names&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,890&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,128)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;762&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Partner relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;680&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(680)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,400&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,444)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,956&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Domain names&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;90&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(75)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Patents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;252&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(250)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total intangible assets, net&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,021&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(16,310)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,711&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i24a2eaef70e744ceb71f26c143f59a2c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMi0yLTEtMS0yMTc5NzQ_d82e9530-3ea0-4eaf-9043-dfd010fd79ff"
      unitRef="usd">1670000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i24a2eaef70e744ceb71f26c143f59a2c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMi00LTEtMS0yMTc5NzQ_42d11a69-2169-42f3-a3ee-5e69b995489b"
      unitRef="usd">1448000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i24a2eaef70e744ceb71f26c143f59a2c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMi02LTEtMS0yMTc5NzQ_36b09ea1-61d1-4d1d-9552-c94b26bce413"
      unitRef="usd">222000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i8e3cea8a3bcb44879f6d143dfb3a6413_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMi04LTEtMS0yMTc5NzQ_319ac4cf-fed4-4098-a5d5-6e8d92fe195b">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i644af7828ca04e86bc604cc0e39d7a85_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMy0yLTEtMS0yMTc5NzQ_38705e33-5d95-4da0-a255-175b1b21a285"
      unitRef="usd">4710000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i644af7828ca04e86bc604cc0e39d7a85_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMy00LTEtMS0yMTc5NzQ_a4268021-f773-43e1-b2e1-c22829ba3904"
      unitRef="usd">1884000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i644af7828ca04e86bc604cc0e39d7a85_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMy02LTEtMS0yMTc5NzQ_8ea86b1b-9da4-48d9-b43d-91b952f34322"
      unitRef="usd">2826000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="ib0e5af2403624369b997ccd8f6c698c4_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMy04LTEtMS0yMTc5NzQ_46792aed-1ece-4905-9cb7-237e21f44af9">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i1103cfbbafa24957a73d27c079a6832f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNC0yLTEtMS0yMTc5NzQ_c6c20f54-decc-4737-b85d-855a541c1bad"
      unitRef="usd">6539000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i1103cfbbafa24957a73d27c079a6832f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNC00LTEtMS0yMTc5NzQ_b0ac8baa-924d-4003-a44f-0d65847493eb"
      unitRef="usd">6539000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i1103cfbbafa24957a73d27c079a6832f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNC02LTEtMS0yMTc5NzQ_a8726ca2-7b0d-41ff-98d6-793312e00930"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="iaced556e4304413283dea277c74bbf7d_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNC04LTEtMS0yMTc5NzQ_ee08b556-dfe6-4dca-b4fc-388d4c4a54f4">P4Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i89667f7b139c492aaa2e289652321adf_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNS0yLTEtMS0yMTc5NzQ_a517a393-a6b4-4e38-86e3-b904974686fe"
      unitRef="usd">1520000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i89667f7b139c492aaa2e289652321adf_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNS00LTEtMS0yMTc5NzQ_529ee09d-65a7-4e01-bed2-4db1b82aa06e"
      unitRef="usd">1211000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i89667f7b139c492aaa2e289652321adf_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNS02LTEtMS0yMTc5NzQ_5da7ab04-1e3b-4c01-a90e-19bcc1051bb4"
      unitRef="usd">309000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="ia31dff2dce60455e97dddf27f3e76dcc_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNS04LTEtMS0yMTc5NzQ_bcc17cd0-69af-4a74-b041-63348c04cd34">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ic5fa38e8c5fa4b17a493cff11f5f7701_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNi0yLTEtMS0yMTc5NzQ_fa9ce6f3-8de6-4a36-a432-680d0a96af20"
      unitRef="usd">680000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ic5fa38e8c5fa4b17a493cff11f5f7701_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNi00LTEtMS0yMTc5NzQ_9d5a924f-549f-4c90-b088-660729858d2f"
      unitRef="usd">680000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ic5fa38e8c5fa4b17a493cff11f5f7701_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNi02LTEtMS0yMTc5NzQ_0eb11e37-a19a-408f-a6e6-a1e7e6bb11be"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i226d97973be04873b0cbebd4ce00c9c9_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNi04LTEtMS0yMTc5NzQ_6e6b68e3-3ebf-4ab5-b738-1fbdc89834ca">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ic13a7c6f285948b9ba61cc25f7d18848_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNy0yLTEtMS0yMTc5NzQ_987bb3ab-0cf7-4432-81e2-bca09f853adb"
      unitRef="usd">7340000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ic13a7c6f285948b9ba61cc25f7d18848_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNy00LTEtMS0yMTc5NzQ_e905305f-a565-4156-b4bb-a11bb82421d7"
      unitRef="usd">5872000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ic13a7c6f285948b9ba61cc25f7d18848_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNy02LTEtMS0yMTc5NzQ_24fd2096-f17a-4a50-b483-4f6d299cca96"
      unitRef="usd">1468000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="ifa6a7eda2af145ee9725069e9e705001_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfNy04LTEtMS0yMTc5NzQ_1265ba1d-0178-4872-87ee-a6ca36c77c12">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i8a84883f05c84d5ebc21e303e558052e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfOC0yLTEtMS0yMTc5NzQ_4b82fde0-365d-4db6-ab35-b6e93c872580"
      unitRef="usd">90000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i8a84883f05c84d5ebc21e303e558052e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfOC00LTEtMS0yMTc5NzQ_e274fc0e-05a4-4d47-9033-f2110f7527ec"
      unitRef="usd">82000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i8a84883f05c84d5ebc21e303e558052e_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfOC02LTEtMS0yMTc5NzQ_b113da74-11cc-4ab0-9c18-ca5ff56b852a"
      unitRef="usd">8000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="iefb927bf04ac4c88ab79db8dcd4437fc_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfOC04LTEtMS0yMTc5NzQ_121d8a5d-fb52-4f5a-b237-249351c280d8">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="iecd5aa98bedb4d2094de3c56ffb027ad_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfOS0yLTEtMS0yMTc5NzQ_30786f3b-3218-4a93-b6dc-f3631280c5a7"
      unitRef="usd">252000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="iecd5aa98bedb4d2094de3c56ffb027ad_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfOS00LTEtMS0yMTc5NzQ_dc5d22de-3a44-41e8-b0cb-2c350d585729"
      unitRef="usd">252000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="iecd5aa98bedb4d2094de3c56ffb027ad_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfOS02LTEtMS0yMTc5NzQ_e0926b24-96c8-4892-9b81-592d694c5f99"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i6690d96540024c81ba287a40782e4502_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfOS04LTEtMS0yMTc5NzQ_c5f434ab-398a-4180-9c79-6ff616edabbb">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMTEtMi0xLTEtMjE3OTc0_456fb1ff-ab96-40f9-9b53-f39851c0f09c"
      unitRef="usd">22801000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMTEtNC0xLTEtMjE3OTc0_89700d57-b57b-47bd-875b-f08c56c11e73"
      unitRef="usd">17968000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMTEtNi0xLTEtMjE3OTc0_73ea74fe-0a98-43b7-aed8-2dcacc251167"
      unitRef="usd">4833000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i4e6f801342894f8e939b2740404cf365_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmNiN2IwMGE0MDdmZjQwNzhhYjg3M2VjMjUxYjI1MzRkL3RhYmxlcmFuZ2U6Y2I3YjAwYTQwN2ZmNDA3OGFiODczZWMyNTFiMjUzNGRfMTEtOC0xLTEtMjE3OTc0_d949257f-ad79-4d58-b42e-0c20bead3047">P4Y8M12D</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="id0d77824f7a64301b77657eafd6d0a44_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMi0yLTEtMS0yMTc5NzQ_5d0e19d5-1aff-4a0e-9dd0-e098f41e3651"
      unitRef="usd">2840000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="id0d77824f7a64301b77657eafd6d0a44_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMi00LTEtMS0yMTc5NzQ_54788845-64ec-4ede-8d81-8f386c44cbbc"
      unitRef="usd">2006000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="id0d77824f7a64301b77657eafd6d0a44_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMi02LTEtMS0yMTc5NzQ_87ee4adf-1441-4e1e-9b61-96a74de6cf22"
      unitRef="usd">834000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i194b9b2e031145f181b03c9c09655ba8_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMi04LTEtMS0yMTc5NzQ_07ea41db-e0cc-4cd2-a710-3c682ad9a3cc">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ie0cebd2c09614354909c34197636ebc1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMy0yLTEtMS0yMTc5NzQ_61d62c80-7490-44e4-9b39-2e80324c57b8"
      unitRef="usd">8330000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ie0cebd2c09614354909c34197636ebc1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMy00LTEtMS0yMTc5NzQ_f7abdfc4-37d3-4985-82cf-8c0705b81d14"
      unitRef="usd">2620000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ie0cebd2c09614354909c34197636ebc1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMy02LTEtMS0yMTc5NzQ_e211d2e0-a734-4189-a89a-646363044679"
      unitRef="usd">5710000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i5a3d92271b9848bebb1327b7a111a2bc_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMy04LTEtMS0yMTc5NzQ_67f1d2c3-fc0e-48b6-bcef-650e406f3a61">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i1cefffe0a8f84349a0961191a75f2b24_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNC0yLTEtMS0yMTc5NzQ_cac90cfe-63b2-414a-a17f-697dbd514977"
      unitRef="usd">6539000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i1cefffe0a8f84349a0961191a75f2b24_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNC00LTEtMS0yMTc5NzQ_c3d7933a-0e63-4ecf-886f-79862ef42dc7"
      unitRef="usd">5107000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i1cefffe0a8f84349a0961191a75f2b24_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNC02LTEtMS0yMTc5NzQ_b61ce00d-c1aa-4b83-bb7c-5e24edaab108"
      unitRef="usd">1432000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i10a2639b2d4d49619e677131e9b846b7_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNC04LTEtMS0yMTc5NzQ_72f97cd9-930d-4292-ae7b-beaef1e09e54">P4Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i8858ed00f5d542ec8191c31e53c75f8b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNS0yLTEtMS0yMTc5NzQ_403d00f8-47ab-447f-9f1b-7211cac88ecd"
      unitRef="usd">1890000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i8858ed00f5d542ec8191c31e53c75f8b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNS00LTEtMS0yMTc5NzQ_5606e417-d772-4fb0-8788-ac82aeae3230"
      unitRef="usd">1128000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i8858ed00f5d542ec8191c31e53c75f8b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNS02LTEtMS0yMTc5NzQ_4a12bb79-83fb-44e2-ac0b-951ba98b4635"
      unitRef="usd">762000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i7e0a58a7a41c458b95abf816888cd9fc_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNS04LTEtMS0yMTc5NzQ_6f77e28c-7d48-459c-b4bd-c5d222390bd5">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i30c6bfad3e0d4a4eb4edfdf2192b3886_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNi0yLTEtMS0yMTc5NzQ_e8888c60-7576-4fc2-a5c6-214415fa3577"
      unitRef="usd">680000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i30c6bfad3e0d4a4eb4edfdf2192b3886_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNi00LTEtMS0yMTc5NzQ_d80e7b7a-1711-4642-8ce6-2e9133060979"
      unitRef="usd">680000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i30c6bfad3e0d4a4eb4edfdf2192b3886_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNi02LTEtMS0yMTc5NzQ_5bc5eee6-ed3f-43e0-9bf5-9b1eaa6dcb06"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i30b06955d45442f6889f15bdd53bfdd0_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNi04LTEtMS0yMTc5NzQ_b90fa930-b727-42c9-af96-6b235aeb3b88">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i041f0ed39a774fefb9308e3e30223b06_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNy0yLTEtMS0yMTc5NzQ_37648f07-a05e-4375-9c5f-7fedf639b5ea"
      unitRef="usd">7400000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i041f0ed39a774fefb9308e3e30223b06_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNy00LTEtMS0yMTc5NzQ_69b77d43-a914-43db-a8e4-f6b8046460b9"
      unitRef="usd">4444000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i041f0ed39a774fefb9308e3e30223b06_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNy02LTEtMS0yMTc5NzQ_8b265a9d-6f42-4a85-aab4-9f20517534dc"
      unitRef="usd">2956000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i6d3653b133d3488c8c827f971435d8e4_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfNy04LTEtMS0yMTc5NzQ_36cdb608-c837-478b-9957-81e1c6a5243b">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i3576d4a814fc4da49cd7630853354e58_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfOC0yLTEtMS0yMTc5NzQ_2f20a1f7-30b9-48f1-b0da-010b02d8a04b"
      unitRef="usd">90000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i3576d4a814fc4da49cd7630853354e58_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfOC00LTEtMS0yMTc5NzQ_89bf73b6-9837-42c8-ac36-aaf9718f5b1a"
      unitRef="usd">75000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i3576d4a814fc4da49cd7630853354e58_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfOC02LTEtMS0yMTc5NzQ_3157b141-e37e-4ef8-9a95-f15b762102f5"
      unitRef="usd">15000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="icbff25ec6f80490584a28dcbe7738620_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfOC04LTEtMS0yMTc5NzQ_5c07f472-0ee4-4370-a477-ef730b395e94">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i8e218856f9514914829c80b2bf12f11d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfOS0yLTEtMS0yMTc5NzQ_786ed574-2d4b-4c3d-b26d-8e405883d504"
      unitRef="usd">252000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i8e218856f9514914829c80b2bf12f11d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfOS00LTEtMS0yMTc5NzQ_727330a6-dedd-4f05-a957-073b77c64159"
      unitRef="usd">250000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i8e218856f9514914829c80b2bf12f11d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfOS02LTEtMS0yMTc5NzQ_80ea4e8c-b18d-4f88-8ebd-eabb1cee4684"
      unitRef="usd">2000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i663477a5682646cd903ed8aafdcbef8e_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfOS04LTEtMS0yMTc5NzQ_23ee566d-28d0-4945-bc0f-cf5d1df36e07">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMTEtMi0xLTEtMjE3OTc0_003e3569-f775-456c-9254-08ca51c149ea"
      unitRef="usd">28021000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMTEtNC0xLTEtMjE3OTc0_a5ccc0a6-1142-4a06-9a68-63549c09e402"
      unitRef="usd">16310000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMTEtNi0xLTEtMjE3OTc0_c2c3dcb1-cc26-4e09-8494-0b6a4f1b4deb"
      unitRef="usd">11711000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i431251433d2b432594073410a12b3518_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyYjhjYzYzMGZhMDQ1ZTY5MDIxYmE5ZmVlMzZhMzhlL3RhYmxlcmFuZ2U6YTJiOGNjNjMwZmEwNDVlNjkwMjFiYTlmZWUzNmEzOGVfMTEtOC0xLTEtMjE3OTc0_61b70ccb-3c92-4f68-a73d-83c4cb21ffd0">P6Y3M18D</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationIntangibleAssets
      contextRef="if110068fe75d4b48b640bb97016e99d7_I20220831"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RleHRyZWdpb246ODk3OWNkNDA5NmU3NGQwZGI5M2VkOWFjNDQ4YWRjZjdfMzg0ODI5MDY5NzkxMA_e2fe6be8-6a37-4078-9d58-56b6958bbc4d"
      unitRef="usd">2500000</us-gaap:DisposalGroupIncludingDiscontinuedOperationIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RleHRyZWdpb246ODk3OWNkNDA5NmU3NGQwZGI5M2VkOWFjNDQ4YWRjZjdfMTc4_3aec57d0-a24e-4c9c-992a-d89d2fd0e83d"
      unitRef="usd">4400000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RleHRyZWdpb246ODk3OWNkNDA5NmU3NGQwZGI5M2VkOWFjNDQ4YWRjZjdfMTgy_a89be116-be35-475a-a1a2-28302684262a"
      unitRef="usd">4600000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RleHRyZWdpb246ODk3OWNkNDA5NmU3NGQwZGI5M2VkOWFjNDQ4YWRjZjdfMTg5_cc0c19c5-000e-4ed0-a151-9060eafac36e"
      unitRef="usd">4900000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RleHRyZWdpb246ODk3OWNkNDA5NmU3NGQwZGI5M2VkOWFjNDQ4YWRjZjdfMzUw_8407b451-d6f1-4755-bd1d-7026a8ab0086">Future amortization expense with respect to intangible assets is estimated as follows (in thousands): &lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:85.681%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.805%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.114%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Years Ending December 31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,476&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;473&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;471&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;471&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2027&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;471&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;471&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,833&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmYyMzA5N2IzNGEwOTQ1ZGNiYzViYjJkZmE4MjYwMDk0L3RhYmxlcmFuZ2U6ZjIzMDk3YjM0YTA5NDVkY2JjNWJiMmRmYTgyNjAwOTRfMS0yLTEtMS0yMTc5NzQ_246873bf-c5e4-4e52-886a-e0195242c782"
      unitRef="usd">2476000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmYyMzA5N2IzNGEwOTQ1ZGNiYzViYjJkZmE4MjYwMDk0L3RhYmxlcmFuZ2U6ZjIzMDk3YjM0YTA5NDVkY2JjNWJiMmRmYTgyNjAwOTRfMi0yLTEtMS0yMTc5NzQ_76c40f67-680d-4047-88ed-812f75492d19"
      unitRef="usd">473000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmYyMzA5N2IzNGEwOTQ1ZGNiYzViYjJkZmE4MjYwMDk0L3RhYmxlcmFuZ2U6ZjIzMDk3YjM0YTA5NDVkY2JjNWJiMmRmYTgyNjAwOTRfMy0yLTEtMS0yMTc5NzQ_99f736b9-6da3-4dff-b6ed-e409d4b42939"
      unitRef="usd">471000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmYyMzA5N2IzNGEwOTQ1ZGNiYzViYjJkZmE4MjYwMDk0L3RhYmxlcmFuZ2U6ZjIzMDk3YjM0YTA5NDVkY2JjNWJiMmRmYTgyNjAwOTRfNC0yLTEtMS0yMTc5NzQ_adf4f939-402a-48f5-9d2d-a1c39ce47e5f"
      unitRef="usd">471000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmYyMzA5N2IzNGEwOTQ1ZGNiYzViYjJkZmE4MjYwMDk0L3RhYmxlcmFuZ2U6ZjIzMDk3YjM0YTA5NDVkY2JjNWJiMmRmYTgyNjAwOTRfNS0yLTEtMS0yMTc5NzQ_6831bd26-712b-4fe6-a0c7-4b62bb7ff765"
      unitRef="usd">471000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmYyMzA5N2IzNGEwOTQ1ZGNiYzViYjJkZmE4MjYwMDk0L3RhYmxlcmFuZ2U6ZjIzMDk3YjM0YTA5NDVkY2JjNWJiMmRmYTgyNjAwOTRfNi0yLTEtMS0yMTc5NzQ_6b67066d-20f7-4723-b133-f24b7c07423a"
      unitRef="usd">471000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmYyMzA5N2IzNGEwOTQ1ZGNiYzViYjJkZmE4MjYwMDk0L3RhYmxlcmFuZ2U6ZjIzMDk3YjM0YTA5NDVkY2JjNWJiMmRmYTgyNjAwOTRfNy0yLTEtMS0yMTc5NzQ_deb9a433-b082-480f-a87d-8c34b05a6998"
      unitRef="usd">4833000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:ScheduleOfGoodwillTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RleHRyZWdpb246ODk3OWNkNDA5NmU3NGQwZGI5M2VkOWFjNDQ4YWRjZjdfMTA5OTUxMTYyODM3NQ_1d0a16dd-2ff8-43fb-91f1-47e15f232f91">The change in the carrying amount of goodwill during the year ended December&#160;31, 2022 is as follows (in thousands):&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:85.681%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.805%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.114%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Goodwill at December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,147&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Goodwill attributed to WegoWise Transaction&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(87)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Goodwill at December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;56,060&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfGoodwillTextBlock>
    <us-gaap:Goodwill
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyZWExZTJkZDM5NzQ3ZTZiZDI3NGE0ODFmYTkwMjdlL3RhYmxlcmFuZ2U6YTJlYTFlMmRkMzk3NDdlNmJkMjc0YTQ4MWZhOTAyN2VfMC0yLTEtMS0yMjIyNTk_998a4f0e-e2a3-466b-99c3-00086f85fb88"
      unitRef="usd">56147000</us-gaap:Goodwill>
    <us-gaap:GoodwillWrittenOffRelatedToSaleOfBusinessUnit
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyZWExZTJkZDM5NzQ3ZTZiZDI3NGE0ODFmYTkwMjdlL3RhYmxlcmFuZ2U6YTJlYTFlMmRkMzk3NDdlNmJkMjc0YTQ4MWZhOTAyN2VfMS0yLTEtMS0yMjIyNTk_fa42ecb7-7b9a-4abc-b6fc-133ec8e1c0b3"
      unitRef="usd">87000</us-gaap:GoodwillWrittenOffRelatedToSaleOfBusinessUnit>
    <us-gaap:Goodwill
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl85Ny9mcmFnOjg5NzljZDQwOTZlNzRkMGRiOTNlZDlhYzQ0OGFkY2Y3L3RhYmxlOmEyZWExZTJkZDM5NzQ3ZTZiZDI3NGE0ODFmYTkwMjdlL3RhYmxlcmFuZ2U6YTJlYTFlMmRkMzk3NDdlNmJkMjc0YTQ4MWZhOTAyN2VfMi0yLTEtMS0yMjIyNTk_de7e4f78-1a81-41f8-bb0e-c716178196d7"
      unitRef="usd">56060000</us-gaap:Goodwill>
    <us-gaap:CompensationRelatedCostsGeneralTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDAvZnJhZzplMmU4NjY0MTA4NWE0YWRlOTRmZGM1Y2Q2NmYwOGZiNy90ZXh0cmVnaW9uOmUyZTg2NjQxMDg1YTRhZGU5NGZkYzVjZDY2ZjA4ZmI3XzEwNA_6914617f-9a51-4ddc-a74f-2b9453d8a37d">Accrued Employee Expenses&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued employee expenses consisted of the following (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.806%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.792%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued vacation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,067&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued bonuses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,806&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,101&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued payroll and other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,503&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,289&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Total accrued employee expenses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,376&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;30,065&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:CompensationRelatedCostsGeneralTextBlock>
    <appf:ScheduleOfAccruedEmployeeExpensesTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDAvZnJhZzplMmU4NjY0MTA4NWE0YWRlOTRmZGM1Y2Q2NmYwOGZiNy90ZXh0cmVnaW9uOmUyZTg2NjQxMDg1YTRhZGU5NGZkYzVjZDY2ZjA4ZmI3XzEwNQ_65badb4b-52ff-45c2-9184-0234dde7b11f">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued employee expenses consisted of the following (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:69.806%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.792%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued vacation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,067&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued bonuses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,806&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,101&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued payroll and other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,503&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,289&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;Total accrued employee expenses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34,376&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;30,065&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</appf:ScheduleOfAccruedEmployeeExpensesTableTextBlock>
    <us-gaap:AccruedVacationCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDAvZnJhZzplMmU4NjY0MTA4NWE0YWRlOTRmZGM1Y2Q2NmYwOGZiNy90YWJsZTpiNWIwYmEwNGI5NTI0MTIwODFhYWRlM2YzOGYxZGYxMy90YWJsZXJhbmdlOmI1YjBiYTA0Yjk1MjQxMjA4MWFhZGUzZjM4ZjFkZjEzXzItMi0xLTEtMjE3OTc0_3abc01ca-bba8-4011-bae0-518099a6cd99"
      unitRef="usd">12067000</us-gaap:AccruedVacationCurrent>
    <us-gaap:AccruedVacationCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDAvZnJhZzplMmU4NjY0MTA4NWE0YWRlOTRmZGM1Y2Q2NmYwOGZiNy90YWJsZTpiNWIwYmEwNGI5NTI0MTIwODFhYWRlM2YzOGYxZGYxMy90YWJsZXJhbmdlOmI1YjBiYTA0Yjk1MjQxMjA4MWFhZGUzZjM4ZjFkZjEzXzItNC0xLTEtMjE3OTc0_06a59e88-e335-4829-904c-d754c09e0c9b"
      unitRef="usd">10675000</us-gaap:AccruedVacationCurrent>
    <us-gaap:AccruedBonusesCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDAvZnJhZzplMmU4NjY0MTA4NWE0YWRlOTRmZGM1Y2Q2NmYwOGZiNy90YWJsZTpiNWIwYmEwNGI5NTI0MTIwODFhYWRlM2YzOGYxZGYxMy90YWJsZXJhbmdlOmI1YjBiYTA0Yjk1MjQxMjA4MWFhZGUzZjM4ZjFkZjEzXzMtMi0xLTEtMjE3OTc0_fa43124a-3935-412f-a6ed-fe278d55c1b2"
      unitRef="usd">13806000</us-gaap:AccruedBonusesCurrent>
    <us-gaap:AccruedBonusesCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDAvZnJhZzplMmU4NjY0MTA4NWE0YWRlOTRmZGM1Y2Q2NmYwOGZiNy90YWJsZTpiNWIwYmEwNGI5NTI0MTIwODFhYWRlM2YzOGYxZGYxMy90YWJsZXJhbmdlOmI1YjBiYTA0Yjk1MjQxMjA4MWFhZGUzZjM4ZjFkZjEzXzMtNC0xLTEtMjE3OTc0_d1485953-83c1-49a2-a4b1-594f0f9afe24"
      unitRef="usd">13101000</us-gaap:AccruedBonusesCurrent>
    <appf:AccruedPayrollAndOtherCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDAvZnJhZzplMmU4NjY0MTA4NWE0YWRlOTRmZGM1Y2Q2NmYwOGZiNy90YWJsZTpiNWIwYmEwNGI5NTI0MTIwODFhYWRlM2YzOGYxZGYxMy90YWJsZXJhbmdlOmI1YjBiYTA0Yjk1MjQxMjA4MWFhZGUzZjM4ZjFkZjEzXzQtMi0xLTEtMjIyMzY4_78a8abf6-ff0d-42cd-b6a6-b96387ee9ff5"
      unitRef="usd">8503000</appf:AccruedPayrollAndOtherCurrent>
    <appf:AccruedPayrollAndOtherCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDAvZnJhZzplMmU4NjY0MTA4NWE0YWRlOTRmZGM1Y2Q2NmYwOGZiNy90YWJsZTpiNWIwYmEwNGI5NTI0MTIwODFhYWRlM2YzOGYxZGYxMy90YWJsZXJhbmdlOmI1YjBiYTA0Yjk1MjQxMjA4MWFhZGUzZjM4ZjFkZjEzXzQtNC0xLTEtMjIyMzY4_0ae6b92f-fa43-4907-a181-06307388b3ed"
      unitRef="usd">6289000</appf:AccruedPayrollAndOtherCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDAvZnJhZzplMmU4NjY0MTA4NWE0YWRlOTRmZGM1Y2Q2NmYwOGZiNy90YWJsZTpiNWIwYmEwNGI5NTI0MTIwODFhYWRlM2YzOGYxZGYxMy90YWJsZXJhbmdlOmI1YjBiYTA0Yjk1MjQxMjA4MWFhZGUzZjM4ZjFkZjEzXzctMi0xLTEtMjE3OTc0_0ef7e7d5-7133-4b2f-9e0b-ecb83c7035f9"
      unitRef="usd">34376000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDAvZnJhZzplMmU4NjY0MTA4NWE0YWRlOTRmZGM1Y2Q2NmYwOGZiNy90YWJsZTpiNWIwYmEwNGI5NTI0MTIwODFhYWRlM2YzOGYxZGYxMy90YWJsZXJhbmdlOmI1YjBiYTA0Yjk1MjQxMjA4MWFhZGUzZjM4ZjFkZjEzXzctNC0xLTEtMjE3OTc0_11a58bb5-8097-47e5-b818-e098e5ac97ec"
      unitRef="usd">30065000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:LesseeOperatingLeasesTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzE0OTk_b56103f9-36d3-4687-95cc-fdaa969e6fdb">Leases&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating leases for our corporate offices have remaining lease terms ranging from five months to ten years, some of which include options to extend the leases for up to ten years. These options to extend have not been recognized as part of our operating lease right-of-use assets and lease liabilities as it is not reasonably certain that we will exercise these options. Our lease agreements do not contain any residual value guarantees or material restrictive covenants. Certain leases contain provisions for property-related costs that are variable in nature for which we are responsible, including common area maintenance, which are expensed as incurred. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The components of lease expense recognized in the Consolidated Statements of Operations were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.642%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.595%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.595%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.600%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Operating lease cost&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,403&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,203&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,272&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Variable lease cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,058&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,463&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,443&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Total lease cost&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,461&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,666&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,715&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Lease-related assets and liabilities were as follows (in thousands, except years and %): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:74.777%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.595%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.598%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,854&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Operating lease right-of-use assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23,485&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:15pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzctMC0xLTEtMjE3OTc0_0445a1bf-14d8-420a-8bf9-a7df406fda04"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzctMC0xLTEtMjE3OTc0_3333639e-0b6e-4a70-9058-c9b49040bbe1"&gt;Other current liabilities&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,357&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,874&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Operating lease liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,237&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;55,733&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total lease liabilities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;53,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;57,607&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:15pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted-average remaining lease term (years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;9.4&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted-average discount rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.9&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future minimum lease payments under non-cancellable leases as of December&#160;31, 2022 were as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:86.923%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.877%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Years ending December 31, &lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:100%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,615&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,351&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,837&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,035&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2027&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,239&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,042&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total future minimum lease payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;65,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: imputed interest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(11,525)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total &lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;53,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(1) &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future minimum lease payments for the year ending December 31, 2023 are presented net of tenant improvement allowances of $3.5&#160;million. &lt;/span&gt;&lt;/div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;During the current year, we decided to exit and make available for sublease certain leased office spaces. As a result, we reassessed our asset groupings and evaluated the recoverability of our right-of-use and other lease related assets, and determined that the carrying value of the respective asset groups was not fully recoverable. We utilized discounted cash flow models to estimate the fair value of the asset groups taking into consideration the time period it will take to obtain a sublessee, the applicable discount rates and the anticipated sublease income and calculated the corresponding impairment loss. We used prices and other relevant information generated primarily by recent market transactions involving similar or comparable assets, as well as our historical experience in real estate transactions. When available, we use valuation inputs from independent valuation experts, such as real estate appraisers and brokers, to corroborate our estimates of fair value. We recorded a net impairment of $22.0&#160;million consisting of $17.6&#160;million related to ROU assets and $4.4&#160;million related to property and equipment associated with our leased office spaces. These amounts were recorded within &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;General and administrative&lt;/span&gt; in our Consolidated Statements of Operations.</us-gaap:LesseeOperatingLeasesTextBlock>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="i42dfeb31b022423b9136af67bc357ff9_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzU0OTc1NTgxODgwNQ_8e4405c6-cc40-4994-a944-d861ce7123ca">P5M</us-gaap:LesseeOperatingLeaseTermOfContract>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="i7307b69f261845acab990dd705217466_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzU0OTc1NTgxODU1MA_86e24f84-8826-4716-a27a-4e902e6587bd">P10Y</us-gaap:LesseeOperatingLeaseTermOfContract>
    <us-gaap:LessorOperatingLeaseRenewalTerm
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzU0OTc1NTgxODUzNA_5f242cad-73d8-4073-8103-9f8c5eafe7ad">P10Y</us-gaap:LessorOperatingLeaseRenewalTerm>
    <us-gaap:LeaseCostTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzE0OTY_09d586f2-1368-4f79-82ca-d8265cee9e8f">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The components of lease expense recognized in the Consolidated Statements of Operations were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.642%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.595%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.595%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.600%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Operating lease cost&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,403&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,203&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,272&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Variable lease cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,058&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,463&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,443&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Total lease cost&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,461&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,666&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,715&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:LeaseCostTableTextBlock>
    <us-gaap:OperatingLeaseCost
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZToyYWQ3MWQxODcwNTA0NDAzOTY1YmFmNjViYWY3MDA1YS90YWJsZXJhbmdlOjJhZDcxZDE4NzA1MDQ0MDM5NjViYWY2NWJhZjcwMDVhXzItMS0xLTEtMjE3OTc0_f36f2911-3022-45cb-8678-c69621e709a7"
      unitRef="usd">5403000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZToyYWQ3MWQxODcwNTA0NDAzOTY1YmFmNjViYWY3MDA1YS90YWJsZXJhbmdlOjJhZDcxZDE4NzA1MDQ0MDM5NjViYWY2NWJhZjcwMDVhXzItMy0xLTEtMjE3OTc0_e9eb9f4b-f3ef-4617-9840-ce0fe17aa01f"
      unitRef="usd">5203000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZToyYWQ3MWQxODcwNTA0NDAzOTY1YmFmNjViYWY3MDA1YS90YWJsZXJhbmdlOjJhZDcxZDE4NzA1MDQ0MDM5NjViYWY2NWJhZjcwMDVhXzItNS0xLTEtMjE3OTc0_5673fc76-ffc6-4b17-ab9d-af5e4960eff2"
      unitRef="usd">5272000</us-gaap:OperatingLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZToyYWQ3MWQxODcwNTA0NDAzOTY1YmFmNjViYWY3MDA1YS90YWJsZXJhbmdlOjJhZDcxZDE4NzA1MDQ0MDM5NjViYWY2NWJhZjcwMDVhXzMtMS0xLTEtMjE3OTc0_42a20b47-2de9-4998-874a-37844d22bc06"
      unitRef="usd">1058000</us-gaap:VariableLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZToyYWQ3MWQxODcwNTA0NDAzOTY1YmFmNjViYWY3MDA1YS90YWJsZXJhbmdlOjJhZDcxZDE4NzA1MDQ0MDM5NjViYWY2NWJhZjcwMDVhXzMtMy0xLTEtMjE3OTc0_eb4d8ba4-7780-4bcd-a440-fe1e0eb6a3fa"
      unitRef="usd">1463000</us-gaap:VariableLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZToyYWQ3MWQxODcwNTA0NDAzOTY1YmFmNjViYWY3MDA1YS90YWJsZXJhbmdlOjJhZDcxZDE4NzA1MDQ0MDM5NjViYWY2NWJhZjcwMDVhXzMtNS0xLTEtMjE3OTc0_af96c717-c3c9-4c8f-903c-8a20305780db"
      unitRef="usd">1443000</us-gaap:VariableLeaseCost>
    <us-gaap:LeaseCost
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZToyYWQ3MWQxODcwNTA0NDAzOTY1YmFmNjViYWY3MDA1YS90YWJsZXJhbmdlOjJhZDcxZDE4NzA1MDQ0MDM5NjViYWY2NWJhZjcwMDVhXzQtMS0xLTEtMjE3OTc0_4cd06d41-5d79-41a4-8ef8-f1d9f5d6439a"
      unitRef="usd">6461000</us-gaap:LeaseCost>
    <us-gaap:LeaseCost
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZToyYWQ3MWQxODcwNTA0NDAzOTY1YmFmNjViYWY3MDA1YS90YWJsZXJhbmdlOjJhZDcxZDE4NzA1MDQ0MDM5NjViYWY2NWJhZjcwMDVhXzQtMy0xLTEtMjE3OTc0_ac3fadeb-2467-47d6-8af9-e92b28a1311c"
      unitRef="usd">6666000</us-gaap:LeaseCost>
    <us-gaap:LeaseCost
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZToyYWQ3MWQxODcwNTA0NDAzOTY1YmFmNjViYWY3MDA1YS90YWJsZXJhbmdlOjJhZDcxZDE4NzA1MDQ0MDM5NjViYWY2NWJhZjcwMDVhXzQtNS0xLTEtMjE3OTc0_c8f5377b-846f-4381-b082-77e2635767e3"
      unitRef="usd">6715000</us-gaap:LeaseCost>
    <appf:LeaseAssetsAndLiabilitiesTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzE0OTc_9a3511ba-ff6b-439f-9202-79a28695f7f8">&lt;div style="text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Lease-related assets and liabilities were as follows (in thousands, except years and %): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:74.777%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.595%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.598%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,854&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Operating lease right-of-use assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23,485&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41,710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:15pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzctMC0xLTEtMjE3OTc0_0445a1bf-14d8-420a-8bf9-a7df406fda04"&gt;&lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzctMC0xLTEtMjE3OTc0_3333639e-0b6e-4a70-9058-c9b49040bbe1"&gt;Other current liabilities&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,357&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,874&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Operating lease liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,237&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;55,733&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total lease liabilities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;53,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;57,607&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:15pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted-average remaining lease term (years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;9.4&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Weighted-average discount rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.9&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4.0&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</appf:LeaseAssetsAndLiabilitiesTableTextBlock>
    <appf:OperatingLeasePrepaidExpensesAndOtherCurrentAssets
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzMtMS0xLTEtMjE3OTc0_592fd49b-6fa7-4a2a-ba3a-cf28a77c56b3"
      unitRef="usd">0</appf:OperatingLeasePrepaidExpensesAndOtherCurrentAssets>
    <appf:OperatingLeasePrepaidExpensesAndOtherCurrentAssets
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzMtMy0xLTEtMjE3OTc0_f4f97384-cde3-4dcd-9044-09c27c0fbbde"
      unitRef="usd">4854000</appf:OperatingLeasePrepaidExpensesAndOtherCurrentAssets>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzQtMS0xLTEtMjE3OTc0_a672bab5-d61a-4df9-8911-aee4082e979a"
      unitRef="usd">23485000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzQtMy0xLTEtMjE3OTc0_df978580-93b6-4c0e-9c42-4dc0a84a1715"
      unitRef="usd">41710000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzctMS0xLTEtMjE3OTc0_399e821c-2ab7-4402-aa51-86b0319e003f"
      unitRef="usd">3357000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzctMy0xLTEtMjE3OTc0_2864945b-0c6f-4530-94d2-07c8edecf9de"
      unitRef="usd">1874000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzgtMS0xLTEtMjE3OTc0_99feb9cc-1cb1-44f3-98ee-eadd4c65b9f2"
      unitRef="usd">50237000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzgtMy0xLTEtMjE3OTc0_9ccc971a-8396-49a9-b20a-98131771f7c4"
      unitRef="usd">55733000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiability
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzktMS0xLTEtMjE3OTc0_8f29235d-b486-4e0d-9847-cdc0ce0aa83e"
      unitRef="usd">53594000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzktMy0xLTEtMjE3OTc0_98baefab-2d95-470c-b6b1-ece6501d7c9c"
      unitRef="usd">57607000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzExLTEtMS0xLTIxNzk3NA_f7e330c4-ffca-4ac6-821d-9da0b02bae16">P9Y4M24D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzExLTMtMS0xLTIxNzk3NA_cece2128-1081-4d9c-9eb3-d9a5f84d7cb5">P10Y3M18D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzEyLTEtMS0xLTIxNzk3NA_fde72627-df06-42d7-a0bb-01d36cbba842"
      unitRef="number">0.039</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo3MWI4ZTY2YjA3NTg0YmRiYTAzOTk4YTM4NjMyZWFiNS90YWJsZXJhbmdlOjcxYjhlNjZiMDc1ODRiZGJhMDM5OThhMzg2MzJlYWI1XzEyLTMtMS0xLTIxNzk3NA_64d8156b-00d6-43f1-9f16-8a20e9bfd4dc"
      unitRef="number">0.040</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzE0OTg_6f19f942-173a-460d-8438-d8413504f20f">&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future minimum lease payments under non-cancellable leases as of December&#160;31, 2022 were as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:86.923%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.877%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Years ending December 31, &lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:100%;position:relative;top:-3.5pt;vertical-align:baseline"&gt;(1)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,615&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,351&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,837&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,035&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2027&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,239&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,042&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total future minimum lease payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;65,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: imputed interest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(11,525)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total &lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;53,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;(1) Future minimum lease payments for the year ending December 31, 2023 are presented net of tenant improvement allowances of $3.5&#160;million.</us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo0YTIzYThjODhhNGY0ZjE1ODQxNGRiZDQ1ZWQ1ZWFmNS90YWJsZXJhbmdlOjRhMjNhOGM4OGE0ZjRmMTU4NDE0ZGJkNDVlZDVlYWY1XzEtMS0xLTEtMjE3OTc0_9b072856-5bb1-4ed5-a998-dd3bd720fcc8"
      unitRef="usd">2615000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo0YTIzYThjODhhNGY0ZjE1ODQxNGRiZDQ1ZWQ1ZWFmNS90YWJsZXJhbmdlOjRhMjNhOGM4OGE0ZjRmMTU4NDE0ZGJkNDVlZDVlYWY1XzItMS0xLTEtMjE3OTc0_ba2b8f81-ba8e-4c9d-9608-d0adb8a1a8ba"
      unitRef="usd">6351000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo0YTIzYThjODhhNGY0ZjE1ODQxNGRiZDQ1ZWQ1ZWFmNS90YWJsZXJhbmdlOjRhMjNhOGM4OGE0ZjRmMTU4NDE0ZGJkNDVlZDVlYWY1XzMtMS0xLTEtMjE3OTc0_827ec565-d88c-44d1-9efa-2dde99254ee2"
      unitRef="usd">6837000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo0YTIzYThjODhhNGY0ZjE1ODQxNGRiZDQ1ZWQ1ZWFmNS90YWJsZXJhbmdlOjRhMjNhOGM4OGE0ZjRmMTU4NDE0ZGJkNDVlZDVlYWY1XzQtMS0xLTEtMjE3OTc0_c7af7a4b-1dd5-4c1a-9016-c668fa0ed3c4"
      unitRef="usd">7035000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo0YTIzYThjODhhNGY0ZjE1ODQxNGRiZDQ1ZWQ1ZWFmNS90YWJsZXJhbmdlOjRhMjNhOGM4OGE0ZjRmMTU4NDE0ZGJkNDVlZDVlYWY1XzUtMS0xLTEtMjE3OTc0_3c4dc5ca-c464-4674-b031-778d954ee370"
      unitRef="usd">7239000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo0YTIzYThjODhhNGY0ZjE1ODQxNGRiZDQ1ZWQ1ZWFmNS90YWJsZXJhbmdlOjRhMjNhOGM4OGE0ZjRmMTU4NDE0ZGJkNDVlZDVlYWY1XzYtMS0xLTEtMjE3OTc0_8300c836-7ee4-41db-b4a9-3954d309467f"
      unitRef="usd">35042000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo0YTIzYThjODhhNGY0ZjE1ODQxNGRiZDQ1ZWQ1ZWFmNS90YWJsZXJhbmdlOjRhMjNhOGM4OGE0ZjRmMTU4NDE0ZGJkNDVlZDVlYWY1XzctMS0xLTEtMjE3OTc0_779a594c-419a-4ba2-bfd1-5f0890575cad"
      unitRef="usd">65119000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo0YTIzYThjODhhNGY0ZjE1ODQxNGRiZDQ1ZWQ1ZWFmNS90YWJsZXJhbmdlOjRhMjNhOGM4OGE0ZjRmMTU4NDE0ZGJkNDVlZDVlYWY1XzgtMS0xLTEtMjE3OTc0_00741f9b-bf11-454d-9d3f-bca0b403ab68"
      unitRef="usd">11525000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:OperatingLeaseLiability
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90YWJsZTo0YTIzYThjODhhNGY0ZjE1ODQxNGRiZDQ1ZWQ1ZWFmNS90YWJsZXJhbmdlOjRhMjNhOGM4OGE0ZjRmMTU4NDE0ZGJkNDVlZDVlYWY1XzktMS0xLTEtMjE3OTc0_4ec4b902-e569-422a-9fcb-febda07baec3"
      unitRef="usd">53594000</us-gaap:OperatingLeaseLiability>
    <appf:TenantAllowanceCurrent
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzU0OTc1NTgxODk5NQ_7a68c426-dc7a-46bb-9951-cdc26024be7f"
      unitRef="usd">3500000</appf:TenantAllowanceCurrent>
    <us-gaap:ImpairmentOfLongLivedAssetsHeldForUse
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzM4NDgyOTA3MDc1MDg_d1f03b5f-78c4-4c35-b3d9-b0d810c81ce4"
      unitRef="usd">22000000</us-gaap:ImpairmentOfLongLivedAssetsHeldForUse>
    <us-gaap:ImpairmentLessorAssetUnderOperatingLease
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzM4NDgyOTA3MDc1MTU_3df669bf-d419-4982-8414-167653877518"
      unitRef="usd">17600000</us-gaap:ImpairmentLessorAssetUnderOperatingLease>
    <us-gaap:ImpairmentExcludingLessorAssetUnderOperatingLease
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDMvZnJhZzpiMWNjYjI0Y2M0NDk0ODQ2OTk0YmNlYjQ0YzIxYmVkYy90ZXh0cmVnaW9uOmIxY2NiMjRjYzQ0OTQ4NDY5OTRiY2ViNDRjMjFiZWRjXzU0OTc1NTgyMjc0MA_09153294-4eea-4eb8-bdcb-fe8b86d1c43c"
      unitRef="usd">4400000</us-gaap:ImpairmentExcludingLessorAssetUnderOperatingLease>
    <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDYvZnJhZzpmZmJjM2ExOWFmZmU0M2Q2OTk1YWVkZWE0MGI4NmYzZi90ZXh0cmVnaW9uOmZmYmMzYTE5YWZmZTQzZDY5OTVhZWRlYTQwYjg2ZjNmXzI0NDg_42cc415d-a560-412a-bdc4-ac586172ed51">Commitments and Contingencies&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt; Liability to Landlord Insurance &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We have a wholly owned subsidiary, Terra Mar Insurance Company, Inc., which was established in connection with reinsuring liability to landlord insurance policies offered to our customers by our third-party service provider. We assume a 100% quota share of the liability to landlord insurance policies placed with our customers by our third-party service provider. We accrue for reported claims, and include an estimate of losses incurred but not reported by our property manager customers, in cost of revenue because we bear the risk related to all such claims. Our estimated liability for reported claims and incurred but not reported claims as of December&#160;31, 2022 and 2021 was $2.7 million and $1.7 million, respectively, and is included in &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Other current liabilities&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; on our Consolidated Balance Sheets.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Included in &lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; as of December&#160;31, 2022 and 2021 are $4.5 million and $3.0 million, respectively, of deposits held with a third party related to requirements to maintain collateral for this risk mitigation service.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Legal Proceedings&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From time to time we may become involved in various legal proceedings, investigative inquiries, and other disputes arising from or related to matters incident to the ordinary course of our business activities. We are not currently a party to any legal proceedings, nor are we aware of any pending or threatened legal proceedings, that we believe would have a material adverse effect on our business, operating results, cash flows or financial condition should such proceedings be resolved unfavorably.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Indemnification&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;In the ordinary course of business, we may provide indemnification of varying scope and terms to customers, business partners, investors, directors, officers, and other parties with respect to certain matters, including, but not limited to, losses arising out of our breach of any applicable agreements, intellectual property infringement claims made by third parties, and other liabilities relating to or arising from our services or our acts or omissions. These indemnification provisions may survive termination of the underlying agreement and the maximum potential amount of future payments we could be required to make under these indemnification provisions may not be subject to maximum loss clauses and is indeterminable. We have not incurred any costs as a result of such indemnification obligations and have not recorded any liabilities related to such obligations in the Consolidated Financial Statements.&lt;/span&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesDisclosureTextBlock>
    <us-gaap:ReinsuranceRetentionPolicyReinsuredRiskPercentage
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDYvZnJhZzpmZmJjM2ExOWFmZmU0M2Q2OTk1YWVkZWE0MGI4NmYzZi90ZXh0cmVnaW9uOmZmYmMzYTE5YWZmZTQzZDY5OTVhZWRlYTQwYjg2ZjNmXzU0OTc1NTgxODMzNg_5d29c0b6-26bd-4277-94b0-d3325de66d85"
      unitRef="number">1</us-gaap:ReinsuranceRetentionPolicyReinsuredRiskPercentage>
    <us-gaap:LiabilityForClaimsAndClaimsAdjustmentExpensePropertyCasualtyLiability
      contextRef="i72a3ae10c29446fc8f4026043c2d4583_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDYvZnJhZzpmZmJjM2ExOWFmZmU0M2Q2OTk1YWVkZWE0MGI4NmYzZi90ZXh0cmVnaW9uOmZmYmMzYTE5YWZmZTQzZDY5OTVhZWRlYTQwYjg2ZjNmXzc2OQ_3297df81-7b86-45a4-a471-453c3096776c"
      unitRef="usd">2700000</us-gaap:LiabilityForClaimsAndClaimsAdjustmentExpensePropertyCasualtyLiability>
    <us-gaap:LiabilityForClaimsAndClaimsAdjustmentExpensePropertyCasualtyLiability
      contextRef="i3c93b5658765457795260a13ec413dad_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDYvZnJhZzpmZmJjM2ExOWFmZmU0M2Q2OTk1YWVkZWE0MGI4NmYzZi90ZXh0cmVnaW9uOmZmYmMzYTE5YWZmZTQzZDY5OTVhZWRlYTQwYjg2ZjNmXzc3Ng_0328104f-6aa3-46b3-9ffd-2d5f80a96e94"
      unitRef="usd">1700000</us-gaap:LiabilityForClaimsAndClaimsAdjustmentExpensePropertyCasualtyLiability>
    <appf:PropertyLiabilityAndCasualtyInsuranceDepositsHeldWithThirdPartyAsCollateralForServices
      contextRef="ibbafbdaddeb747d990bba162e7d7ffcf_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDYvZnJhZzpmZmJjM2ExOWFmZmU0M2Q2OTk1YWVkZWE0MGI4NmYzZi90ZXh0cmVnaW9uOmZmYmMzYTE5YWZmZTQzZDY5OTVhZWRlYTQwYjg2ZjNmXzk0OQ_a694f534-c1a8-4706-bb8d-f42723ab903f"
      unitRef="usd">4500000</appf:PropertyLiabilityAndCasualtyInsuranceDepositsHeldWithThirdPartyAsCollateralForServices>
    <appf:PropertyLiabilityAndCasualtyInsuranceDepositsHeldWithThirdPartyAsCollateralForServices
      contextRef="ida8bd57071df4b259033792ced2354e7_I20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDYvZnJhZzpmZmJjM2ExOWFmZmU0M2Q2OTk1YWVkZWE0MGI4NmYzZi90ZXh0cmVnaW9uOmZmYmMzYTE5YWZmZTQzZDY5OTVhZWRlYTQwYjg2ZjNmXzk1Ng_b68f7f10-bde6-45e0-8d8b-6aca12e010d0"
      unitRef="usd">3000000</appf:PropertyLiabilityAndCasualtyInsuranceDepositsHeldWithThirdPartyAsCollateralForServices>
    <us-gaap:StockholdersEquityNoteDisclosureTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzU4MjY_564603b4-9e78-4482-b88f-21a6203ed76b">Stockholders' Equity&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Amended and Restated Certificate of Incorporation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Upon the effectiveness of our Amended and Restated Certificate of Incorporation on June 25, 2015, the number of shares of capital stock that is authorized to be issued was increased to 325,000,000 shares, of which 250,000,000 shares are Class A common stock, 50,000,000 shares are Class B common stock and 25,000,000 are undesignated preferred stock. The Class A common stock, Class B common stock and preferred stock have a par value of $0.0001 per share. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Class A Common Stock and Class B Common Stock &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Except for voting rights, or as otherwise required by applicable law, the shares of our Class&#160;A common stock and Class B common stock have the same powers, preferences and rights and rank equally, share ratably and are identical in all respects as to all matters. The rights and preferences are as follows:&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Dividend Rights&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;. Subject to preferences that may apply to any shares of preferred stock outstanding at the time, the holders of outstanding shares of our Class A common stock and Class B common stock are entitled to receive dividends out of funds legally available at the times and in the amounts that our Board of Directors may determine. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Voting Rights&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;. The holders of our Class&#160;A common stock are entitled to one vote per share, and holders of our Class B common stock are entitled to 10 votes per share. The holders of our Class&#160;A common stock and Class B common stock will vote together as a single class on all matters submitted to a vote of our stockholders, unless otherwise required by Delaware law or our amended and restated certificate of incorporation. Delaware law could require either holders of our Class&#160;A common stock or holders of our Class B common stock to vote separately. In addition, our amended and restated certificate of incorporation requires the approval of the holders of at least a majority of the outstanding shares of our Class B common stock, voting as a separate class to approve a change-in-control transaction. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Conversion&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;. Each share of our Class B common stock is convertible at any time at the option of the holder into one share of our Class&#160;A common stock. In addition, each share of our Class B common stock will convert into one share of our Class&#160;A common stock upon any transfer, whether or not for value, except for certain transfers described in our amended and restated certificate of incorporation, including, without limitation, (i)&#160;a transfer by a partnership or limited liability company that was a registered holder of our Class B common stock at the &#x201c;effective time,&#x201d; as defined in our amended and restated certificate of incorporation, to a partner or member thereof at the effective time or (ii)&#160;a transfer to a &#x201c;qualified recipient,&#x201d; as defined in our amended and restated certificate of incorporation. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;All the outstanding shares of our Class B common stock will convert automatically into shares of our Class&#160;A common stock upon the date when the number of outstanding shares of our Class B common stock represents less than 10% of all outstanding shares of our Class&#160;A common stock and Class B common stock. Once converted into our Class A common stock, our Class B common stock may not be reissued. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Right to Receive Liquidation Distributions&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;. Upon our dissolution, liquidation or winding-up, the assets legally available for distribution to our stockholders are distributable ratably among the holders of our Class&#160;A common stock and Class B common stock, subject to prior satisfaction of all outstanding debt and liabilities and the preferential rights and payment of liquidation preferences, if any, on any outstanding shares of preferred stock. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Preferred Stock &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our Board of Directors is authorized, subject to limitations prescribed by Delaware law, to issue up to 25,000,000 shares of our preferred stock in one or more series, to establish from time to time the number of shares to be included in each series, and to fix the designation, powers, preferences and rights of the shares of each series and any of its qualifications, limitations or restrictions, in each case without further action by our stockholders. The number of authorized shares of any series of preferred stock may be increased or decreased, but not below the number of shares of that series then outstanding, by the affirmative vote of the holders of a majority of the voting power of our outstanding capital stock entitled to vote thereon, or such other vote as may be required by the certificate of designation establishing the series. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Share Repurchase Program&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:6pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On February 20, 2019, our Board of Directors authorized a $100.0&#160;million share repurchase program (the "Share Repurchase Program") relating to our outstanding shares of Class A common stock. Under the Share Repurchase Program, share repurchases may be made from time to time, as directed by a committee consisting of three directors, in open market purchases or in privately negotiated transactions at a repurchase price that the members of the committee unanimously believe is below intrinsic value conservatively determined. The Share Repurchase Program does not obligate us to repurchase any specific dollar amount or number of shares, there is no expiration date for the Share Repurchase Program, which&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; may be modified, suspended or terminated at any time and for any reason. &lt;/span&gt;&lt;/div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;During the year ended December 31, 2020, we repurchased a total of 48,002 shares of our Class A common stock through open market repurchases, and recorded a $4.2&#160;million reduction to stockholders' equity, which includes broker commissions. We have not made any other repurchases under the &lt;/span&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Share Repurchase &lt;/span&gt;Program.</us-gaap:StockholdersEquityNoteDisclosureTextBlock>
    <us-gaap:CapitalUnitsAuthorized
      contextRef="i506a016a6e9341dfa2093ed935c11d4e_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzI2Ng_07ad2f64-dd11-4862-9aa5-980a37207d3d"
      unitRef="shares">325000000</us-gaap:CapitalUnitsAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i486bf6e1059c437692ec86ee91f33912_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzI4Ng_2a05379f-8396-4a7e-a50d-bad55ca44d67"
      unitRef="shares">250000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i25d1c29978264825a8101593c7263922_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzMyMg_0e11b890-1d01-4811-ad19-fc2eb4483d22"
      unitRef="shares">50000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i212fe600a3184904be9746d69c040c2d_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzM2MQ_af642432-bc0b-4098-b06d-f466964141a2"
      unitRef="shares">25000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i486bf6e1059c437692ec86ee91f33912_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzQ4NQ_1aaf49eb-12ec-4ea8-8ba1-bb271d4fe89a"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i25d1c29978264825a8101593c7263922_I20150625"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzQ4NQ_6ce607f9-0086-42da-8511-26452407cbe5"
      unitRef="usdPerShare">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
    <appf:CommonStockNumberOfVotesPerCommonShare
      contextRef="i7f8abd3a26204976b7e27d8426b5aa79_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzEyNjc_f0f70e17-f9f6-404e-b340-4e57c77732aa"
      unitRef="votepershare">1</appf:CommonStockNumberOfVotesPerCommonShare>
    <appf:CommonStockNumberOfVotesPerCommonShare
      contextRef="ib3012faadbe74b9e978c86340ff59230_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzEzNDI_8c157871-18be-4e87-bb5c-89282923d52d"
      unitRef="votepershare">10</appf:CommonStockNumberOfVotesPerCommonShare>
    <appf:ConversionOfStockNumberOfSharesIssuableUponConversion
      contextRef="i57c2a59b33ce40bc894cb736e09a068c_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzIzMjQ_cfb9ed79-7002-4d1c-a42f-4370a95d88b2"
      unitRef="shares">1</appf:ConversionOfStockNumberOfSharesIssuableUponConversion>
    <appf:ConversionOfStockNumberOfSharesIssuableUponConversionDueToTransfer
      contextRef="i57c2a59b33ce40bc894cb736e09a068c_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzI0MzI_e02f9aa0-fbc4-4c00-8512-d840f0b4f07f"
      unitRef="shares">1</appf:ConversionOfStockNumberOfSharesIssuableUponConversionDueToTransfer>
    <appf:CommonStockAutomaticConversionThreshold
      contextRef="i57c2a59b33ce40bc894cb736e09a068c_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzMyNDc_cd8efa74-9218-4064-85f1-1e40ada29d46"
      unitRef="number">0.10</appf:CommonStockAutomaticConversionThreshold>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzM5OTQ_4a2bf796-6797-4734-9b36-03555d442cc2"
      unitRef="shares">25000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="icc1fa99cdb6f4f42b7b46da014904052_I20190220"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzQ4MTU_75be713f-758e-4435-9f4e-f7418cdf92fa"
      unitRef="usd">100000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <appf:StockRepurchaseProgramNumberOfDirectorsToAuthorizeRepurchases
      contextRef="icc1fa99cdb6f4f42b7b46da014904052_I20190220"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzUwNjI_21e4e8f5-2ddd-4e76-a2cc-0218c2f08f3e"
      unitRef="director">3</appf:StockRepurchaseProgramNumberOfDirectorsToAuthorizeRepurchases>
    <us-gaap:TreasuryStockSharesAcquired
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzU1OTA_da042c65-6e18-4ccc-92b5-cb1fa081b40e"
      unitRef="shares">48002</us-gaap:TreasuryStockSharesAcquired>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMDkvZnJhZzpjODE3NGM0MTA0M2Y0MDgyODA0NDUwM2JhOWIzMGM5ZS90ZXh0cmVnaW9uOmM4MTc0YzQxMDQzZjQwODI4MDQ0NTAzYmE5YjMwYzllXzU2NzY_4f6ddf68-03f7-4d58-aad1-607092e96c32"
      unitRef="usd">4200000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzYyNjc_226d5505-18e6-4d4f-8477-b1894a648120">Stock-Based Compensation&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We currently have two stock incentive plans, our 2007 Stock Incentive Plan (the "2007 Plan") and the 2015 Stock Incentive Plan (the "2015 Plan"). The 2007 Plan expired on February 14, 2017, however it will continue to govern outstanding awards granted under the 2007 Plan. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Under the 2015 Plan, 2,000,000 shares of our Class A common stock were reserved and available for grant and issuance. On January 1 of each subsequent calendar year, the number of shares available for grant and issuance under the 2015 Plan increase by the lesser of (i)&#160;the number of shares of our Class A common stock subject to awards granted under the 2015 Plan during the preceding calendar year and (ii)&#160;such lesser number of shares of our Class A common stock determined by our Board of Directors. At December&#160;31, 2022, we have reserved an aggregate of 4,450,726 shares of our Class&#160;A common stock for grant and issuance under the 2015 Plan. The number of shares of our Class A common stock is also subject to adjustment in the event of a recapitalization, stock split, reclassification, stock dividend or other change in our capitalization. The 2015 Plan authorizes the award of stock options, stock appreciation rights, RSAs, RSUs, performance awards and stock bonuses. The 2015 Plan provides for the grant of awards to our employees, directors, consultants and independent contractors, subject to certain exceptions. RSUs, PSUs, and RSAs have been issued during 2022 pursuant to the 2015 Plan.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;RSUs and PSUs represent the right on the part of the holder to receive shares of our Class&#160;A common stock at a specified date in the future or the achievement of performance conditions at the discretion of our compensation committee, subject to forfeiture of that right due to termination of employment.&#160;If an RSU or PSU has not been forfeited, then, on the specified date, we will deliver to the holder of the RSU or PSU shares of our Class&#160;A common stock. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Stock Options&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of activity in connection with our stock options for the year ended December&#160;31, 2022 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.219%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.397%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Number&#160;of Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted Average Exercise Price&#160;per&#160;Share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted Average Remaining Contractual&#160;Life in Years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options outstanding as of December&#160;31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;846&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13.15&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options exercised&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(330)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13.56&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options outstanding as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;516&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12.90&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2.7&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;At December&#160;31, 2022:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options vested and expected to vest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;516&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12.90&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2.7&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options exercisable&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;516&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12.90&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2.7&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our stock-based compensation expense for stock options were not material for the periods presented.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;No stock options were granted during the years ended December&#160;31, 2022, 2021 or 2020. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The total intrinsic value of options exercised in 2022, 2021 and 2020 was $31.1 million, $39.1&#160;million, and $17.9 million, respectively. This intrinsic value represents the difference between the fair value of our common stock on the date of exercise and the exercise price of each option. Based on the fair value of our common stock at December&#160;31, 2022, the total intrinsic value of all outstanding options, exercisable options, and options vested and expected to vest was $47.7 million. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Restricted Stock Units&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of activity in connection with our RSUs for the year ended December&#160;31, 2022 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.442%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.322%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.470%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Number&#160;of Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted Average Grant&#160;Date Fair&#160;Value&#160;per&#160;Share&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;837&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;118.27&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;726&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;110.61&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(252)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;111.03&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(149)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;104.09&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,162&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;116.88&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:7pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Unvested RSUs as of December&#160;31, 2022 were composed of 1.0&#160;million RSUs with only service conditions and 0.2&#160;million PSUs with both service conditions and performance conditions. RSUs granted with only service conditions generally vest over a four-year period. The number of PSUs granted, as included in the above table, assumes achievement of the performance metric at 100% of the performance target. Of the unvested PSUs as of December&#160;31, 2022, 0.1 million are subject to vesting based on the achievement of pre-established performance metrics for the year ending December 31, 2022 and will vest over a &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzIxOTkwMjMyNjE5MTY_db04c102-a283-4a35-be0f-af39d73514a0"&gt;three&lt;/span&gt; year period, assuming continued employment throughout the performance period. The actual number of shares to be issued at the end of the performance period will range from 0% to 150% of the target number of shares depending on achievement relative to the performance metric over the applicable period. The remaining 0.1 million PSUs unvested as of December&#160;31, 2022 are subject to vesting based on the achievement of pre-established performance metrics for the years ending December 31, 2022 and 2023, assuming continued employment throughout the performance period. The actual number of shares to be issued at the end of the performance period will range from 0% to 100% of the initial target awards. Achievement of the performance metric between 100% and 150% of the performance target will result in a performance-based cash bonus payment between 0% and 65% of the initial target awards.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We recognized stock-based compensation expense for the RSUs and PSUs of $43.3 million, $17.3 million and $10.4 million for the years ended December&#160;31, 2022, 2021 and 2020, respectively. Excluded from stock-based compensation expense is capitalized software development costs of $3.0&#160;million, $2.7&#160;million, and $2.1&#160;million for the years ended December&#160;31, 2022, 2021 and 2020, respectively. As of December&#160;31, 2022, the total estimated remaining stock-based compensation expense for the aforementioned RSUs and PSUs was $100.1 million, which is expected to be recognized over a weighted average period of 2.6 years. The total fair value of RSUs and PSUs vested during the years ended December&#160;31, 2022, 2021 and 2020 was approximately $27.5&#160;million, $26.6&#160;million and $32.0&#160;million, respectively. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Restricted Stock Awards&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of activity in connection with our RSAs for the year ended December&#160;31, 2022 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.543%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.689%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.008%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Number&#160;of Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted- Average Grant&#160;Date Fair&#160;Value&#160;per&#160;Share&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;144.33&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96.33&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;144.33&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96.33&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:7pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;We have the right to repurchase any unvested RSAs subject to certain conditions. Restricted stock awards vest over a one-year period. Our stock-based compensation expense for RSAs was not material for the periods presented.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2022, the total estimated remaining stock-based compensation expense for unvested restricted stock awards with a repurchase right was $0.3 million, which is expected to be recognized over a weighted average period of 0.5 years.&lt;/span&gt;&lt;/div&gt;</us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
    <appf:ShareBasedCompensationNumberOfStockIncentivePlans
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzEwOTk1MTE2MzY5NDQ_51d1c40b-6789-47f3-a695-0af0be286283"
      unitRef="plan">2</appf:ShareBasedCompensationNumberOfStockIncentivePlans>
    <us-gaap:DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance
      contextRef="if774862617fc44cbba4a1a7fd8080d77_I20151231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzIyNg_e2e27723-44dc-4c1d-bb5c-5f62812f08a5"
      unitRef="shares">2000000</us-gaap:DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance>
    <us-gaap:DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance
      contextRef="i24ee6eca4c0c4218954cff9dce4a7ca4_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2Xzc0MQ_770ef900-47ea-4d35-aeb3-6a30c2abedbc"
      unitRef="shares">4450726</us-gaap:DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzYyNjk_98824b33-bf4c-4576-96a4-6019c29474f2">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of activity in connection with our stock options for the year ended December&#160;31, 2022 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.219%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.397%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Number&#160;of Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted Average Exercise Price&#160;per&#160;Share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted Average Remaining Contractual&#160;Life in Years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options outstanding as of December&#160;31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;846&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13.15&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.0&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options exercised&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(330)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13.56&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options outstanding as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;516&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12.90&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2.7&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;At December&#160;31, 2022:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options vested and expected to vest&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;516&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12.90&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2.7&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options exercisable&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;516&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12.90&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2.7&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzEtMi0xLTEtMjE3OTc0_28d121f9-614f-4a34-b8d9-4e9f34b22478"
      unitRef="shares">846000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzEtNC0xLTEtMjE3OTc0_1f46a434-25a1-4d14-960c-96e073a8a77f"
      unitRef="usdPerShare">13.15</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="i02bbde10d21e49b499061d54a14a61ac_D20220101-20220331"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzEtNi0xLTEtMjE3OTc0_bd003122-7b06-4386-9519-39192d1970b6">P3Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzMtMi0xLTEtMjE3OTc0_b941f56b-822b-4bff-b534-7e7edf1e3ff6"
      unitRef="shares">330000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzMtNC0xLTEtMjE3OTc0_a84ba467-b81a-49f9-9e86-2ad131dd098e"
      unitRef="usdPerShare">13.56</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzUtMi0xLTEtMjE3OTc0_39c1371e-cb04-42d9-9850-f5c8c10c570e"
      unitRef="shares">516000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzUtNC0xLTEtMjE3OTc0_1590b1b3-6972-456a-b33c-dd2616dd3700"
      unitRef="usdPerShare">12.90</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzUtNi0xLTEtMjE3OTc0_be882a67-1da9-4db7-ad10-b7bfa0eb9d98">P2Y8M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzgtMi0xLTEtMjE3OTc0_863697e8-4638-4b2c-aa7e-1fe1b097cd4e"
      unitRef="shares">516000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzgtNC0xLTEtMjE3OTc0_4de2c40d-0c77-4fd6-8088-6babfaa0bef0"
      unitRef="usdPerShare">12.90</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzgtNi0xLTEtMjE3OTc0_4e7297ee-774e-47b3-8f24-ca9b8123e1ea">P2Y8M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzktMi0xLTEtMjE3OTc0_91db74ee-e548-45f9-94b9-345b8877018f"
      unitRef="shares">516000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzktNC0xLTEtMjE3OTc0_a6dc7b7b-5f23-4f1a-9127-49f2c3dee74a"
      unitRef="usdPerShare">12.90</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTplMWQ0NDAwN2FiYzA0YTRhYmY4MzEwYTNlNTBkMzJlYi90YWJsZXJhbmdlOmUxZDQ0MDA3YWJjMDRhNGFiZjgzMTBhM2U1MGQzMmViXzktNi0xLTEtMjE3OTc0_d087f67a-a9ac-4f2f-a47f-b9770ff925ae">P2Y8M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzI4ODk_17a0816e-79cb-42ec-bf93-5a179453a78e"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzI4ODk_2ed796de-bcb8-4390-8e3c-e9d2ba37a395"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzI4ODk_494baf2e-97d8-4e7a-ab07-1eb44c63a84f"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzU0OTc1NTgyMTAyNQ_ed3a76c8-adde-4e8c-87b8-0f9ac5ddec49"
      unitRef="usd">31100000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzMwMjk_14ca9852-0676-47be-a7bf-3866e2096983"
      unitRef="usd">39100000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzMwMzc_f631f203-be7b-44ce-9eb4-19fc26a0c8c6"
      unitRef="usd">17900000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzU0OTc1NTgyMTAzNA_94954ca1-396d-473f-a082-dcc57fe8f261"
      unitRef="usd">47700000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:ScheduleOfNonvestedRestrictedStockUnitsActivityTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzYyNjQ_079810dc-96b6-473b-a070-62e261e98a4e">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of activity in connection with our RSUs for the year ended December&#160;31, 2022 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.442%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.322%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.470%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Number&#160;of Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted Average Grant&#160;Date Fair&#160;Value&#160;per&#160;Share&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;837&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;118.27&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;726&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;110.61&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(252)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;111.03&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(149)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;104.09&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,162&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;116.88&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfNonvestedRestrictedStockUnitsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i621bb8d156354fcdb79735b68df62bfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZToxNGMwZTFkZDIwZjA0OGQ4OGE5YjA5MDNjNmMxOGIxMS90YWJsZXJhbmdlOjE0YzBlMWRkMjBmMDQ4ZDg4YTliMDkwM2M2YzE4YjExXzEtMi0xLTEtMjE3OTc0_b24b2bd7-c412-494c-9b3f-135732d9aeaf"
      unitRef="shares">837000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i621bb8d156354fcdb79735b68df62bfe_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZToxNGMwZTFkZDIwZjA0OGQ4OGE5YjA5MDNjNmMxOGIxMS90YWJsZXJhbmdlOjE0YzBlMWRkMjBmMDQ4ZDg4YTliMDkwM2M2YzE4YjExXzEtNC0xLTEtMjE3OTc0_e81b5da6-ce8b-4d2b-a86a-51c3ccb49171"
      unitRef="usdPerShare">118.27</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="i3bacb6be24d84e92b1bf42e6e4e7aef3_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZToxNGMwZTFkZDIwZjA0OGQ4OGE5YjA5MDNjNmMxOGIxMS90YWJsZXJhbmdlOjE0YzBlMWRkMjBmMDQ4ZDg4YTliMDkwM2M2YzE4YjExXzItMi0xLTEtMjE3OTc0_944f7dd5-07ee-4ad8-92b8-13e33e9866f5"
      unitRef="shares">726000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i3bacb6be24d84e92b1bf42e6e4e7aef3_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZToxNGMwZTFkZDIwZjA0OGQ4OGE5YjA5MDNjNmMxOGIxMS90YWJsZXJhbmdlOjE0YzBlMWRkMjBmMDQ4ZDg4YTliMDkwM2M2YzE4YjExXzItNC0xLTEtMjE3OTc0_6940bc1e-dce1-4e85-9937-b3254ae3dd90"
      unitRef="usdPerShare">110.61</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i3bacb6be24d84e92b1bf42e6e4e7aef3_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZToxNGMwZTFkZDIwZjA0OGQ4OGE5YjA5MDNjNmMxOGIxMS90YWJsZXJhbmdlOjE0YzBlMWRkMjBmMDQ4ZDg4YTliMDkwM2M2YzE4YjExXzMtMi0xLTEtMjE3OTc0_2fb9ced1-8dc2-45e8-8aa6-36f2bd2804a5"
      unitRef="shares">252000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="i3bacb6be24d84e92b1bf42e6e4e7aef3_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZToxNGMwZTFkZDIwZjA0OGQ4OGE5YjA5MDNjNmMxOGIxMS90YWJsZXJhbmdlOjE0YzBlMWRkMjBmMDQ4ZDg4YTliMDkwM2M2YzE4YjExXzMtNC0xLTEtMjE3OTc0_fcc395f6-84b4-4ee2-adf6-bf1653c14b36"
      unitRef="usdPerShare">111.03</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="i3bacb6be24d84e92b1bf42e6e4e7aef3_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZToxNGMwZTFkZDIwZjA0OGQ4OGE5YjA5MDNjNmMxOGIxMS90YWJsZXJhbmdlOjE0YzBlMWRkMjBmMDQ4ZDg4YTliMDkwM2M2YzE4YjExXzQtMi0xLTEtMjE3OTc0_94cb9058-cbbe-4eaa-9e6b-e0676b49704e"
      unitRef="shares">149000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="i3bacb6be24d84e92b1bf42e6e4e7aef3_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZToxNGMwZTFkZDIwZjA0OGQ4OGE5YjA5MDNjNmMxOGIxMS90YWJsZXJhbmdlOjE0YzBlMWRkMjBmMDQ4ZDg4YTliMDkwM2M2YzE4YjExXzQtNC0xLTEtMjE3OTc0_ccbdc666-62a5-4fc4-a5d8-e366b1607a54"
      unitRef="usdPerShare">104.09</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="if6e14c2a45fe439eaaaf6e55b5b7927f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZToxNGMwZTFkZDIwZjA0OGQ4OGE5YjA5MDNjNmMxOGIxMS90YWJsZXJhbmdlOjE0YzBlMWRkMjBmMDQ4ZDg4YTliMDkwM2M2YzE4YjExXzUtMi0xLTEtMjE3OTc0_ce206a20-5176-4cef-aa52-e83c8c3fb306"
      unitRef="shares">1162000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="if6e14c2a45fe439eaaaf6e55b5b7927f_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZToxNGMwZTFkZDIwZjA0OGQ4OGE5YjA5MDNjNmMxOGIxMS90YWJsZXJhbmdlOjE0YzBlMWRkMjBmMDQ4ZDg4YTliMDkwM2M2YzE4YjExXzUtNC0xLTEtMjE3OTc0_01ffcc21-9c76-44ed-9cf0-990637ebfc80"
      unitRef="usdPerShare">116.88</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="ide8dfe7ee45d462193394690593e8c0d_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzM1Njk_e3206bb8-652b-4de0-97cf-0a729f3476d5"
      unitRef="shares">1000000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="ic8a3790ae6174e50aaf1dbf17697dda0_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzM2MTA_6dda7c83-4a92-453e-b7a5-c9675a91a3f5"
      unitRef="shares">200000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i3bacb6be24d84e92b1bf42e6e4e7aef3_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzYyODM_298d51e5-364e-4e9f-be29-6da3014163e2">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i582945bb60be4ca7ad00050a00bdb3a8_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzM4NjQ_3393e4a8-d80b-4e13-a970-7d54448572b7"
      unitRef="number">1</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="ieb85f5e149434170b300e28e314881a6_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzM5MjU_4181cd01-75de-4ab1-bae5-9c2c9ebbe2aa"
      unitRef="shares">100000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="idb0fcfd4c7a34ead92b5e236f3d0c353_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzQyNTI_739c91b4-3fa6-4bc1-bf8e-fefbbd5d9786"
      unitRef="number">0</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i3aea1974e954450ea895869ef79a4878_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzQyNTg_a9ef3f0a-64f9-46ce-a554-8cacf14ddc63"
      unitRef="number">1.50</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="ic7f579907b294dbfbbffc2c18c80090b_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzQzOTQ_eddd347d-6894-4152-8073-9cd2ec7852cf"
      unitRef="shares">100000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i42dfeb31b022423b9136af67bc357ff9_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzQ3MjE_d027a3f8-80f9-4433-b1e3-b09e1cdc9d41"
      unitRef="number">0</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="ie4f1018583744fd8bd4355399815f18b_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzQ3Mjc_195a8d98-aaeb-4850-b777-fb895da3f8ba"
      unitRef="number">1</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i123adec116254bbd8bbebbdd97700928_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzQ4MDY_048c67ac-1fb2-44bd-a7c9-ea49519ebf1e"
      unitRef="number">1</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric
      contextRef="i89494c497dba4e6fa857631e6848c8fc_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzQ4MTM_68790502-635e-41bb-9745-1147ed803f5a"
      unitRef="number">1.50</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfAwardTargetPerformanceMetric>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfCashBonusPaymentOnInitialTargets
      contextRef="i112a5d35139c4cf5bd15d865d9be67c9_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzQ5MDQ_54a81d0b-1b0f-4730-a108-c370677ab80e"
      unitRef="number">0</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfCashBonusPaymentOnInitialTargets>
    <appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfCashBonusPaymentOnInitialTargets
      contextRef="i8bb61f530daa44b4b0a33713b0011fa4_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzQ5MTE_57098eb6-e363-4a65-bedd-af81101ae198"
      unitRef="number">0.65</appf:ShareBasedCompensationArrangementsByShareBasedPaymentAwardPercentOfCashBonusPaymentOnInitialTargets>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i3be12c153d8145d0b428a88a88bbb1dd_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzU0OTc1NTgyMTA1Ng_b3b6c3cc-12da-41ba-85c6-297811b4b191"
      unitRef="usd">43300000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic39a40161c1b4ef9a1578a0dc539b439_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzUwMjA_1cc69f4f-0117-4f43-9e32-8e11a8c7b74a"
      unitRef="usd">17300000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i39b5edc6741742d6994df3d56858048f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzUwMjc_f86fd8ba-920c-47d4-a232-450f12abb3b8"
      unitRef="usd">10400000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount
      contextRef="i3be12c153d8145d0b428a88a88bbb1dd_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzUxNzE_2b6b945c-0d0a-4836-93da-c150873432f2"
      unitRef="usd">3000000</us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount>
    <us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount
      contextRef="ic39a40161c1b4ef9a1578a0dc539b439_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzUxNzU_fdc9b76f-e40e-4730-a377-0aba5bc15a53"
      unitRef="usd">2700000</us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount>
    <us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount
      contextRef="i39b5edc6741742d6994df3d56858048f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzUxODM_b2047559-3c98-462d-9452-7c6fcee0076e"
      unitRef="usd">2100000</us-gaap:EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsCapitalizedAmount>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions
      contextRef="iab43d4f279a248a3ab83a7044bad467b_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzU0OTc1NTgyMTA2Ng_41ee6602-633e-4457-a1cd-e918c10e7d22"
      unitRef="usd">100100000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i3be12c153d8145d0b428a88a88bbb1dd_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzU0OTc1NTgyMTE2NQ_bbe82bb4-5012-4b06-a4ef-8a57ead041c1">P2Y7M6D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue
      contextRef="i3be12c153d8145d0b428a88a88bbb1dd_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzU0OTc1NTgyMTE3Mw_52c6e01f-a9fe-43a8-a4a4-b1c7fe3ccb7e"
      unitRef="usd">27500000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue
      contextRef="ic39a40161c1b4ef9a1578a0dc539b439_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzU1MzA_5af04d96-f351-4a5d-96b2-1c89caf76e85"
      unitRef="usd">26600000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue
      contextRef="i39b5edc6741742d6994df3d56858048f_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzU1Mzc_d4a10f9c-178c-4887-bbed-e5dba1594ad8"
      unitRef="usd">32000000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue>
    <us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzYyNzg_b8f1fe04-30b4-4617-90fa-9fc51b06a577">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A summary of activity in connection with our RSAs for the year ended December&#160;31, 2022 is as follows (number of shares in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.543%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.689%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.008%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Number&#160;of Shares&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted- Average Grant&#160;Date Fair&#160;Value&#160;per&#160;Share&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;144.33&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96.33&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;144.33&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unvested as of December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96.33&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="id07f23c6df2f4b1a87836bcd367b4124_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTo0NzAxNDU2YTY5MGM0MDgxODI3YTk2ZDI4MmFkZWRkZC90YWJsZXJhbmdlOjQ3MDE0NTZhNjkwYzQwODE4MjdhOTZkMjgyYWRlZGRkXzEtMi0xLTEtMjE3OTc0_3c60e4c6-e438-42b5-a7c7-f6d277099394"
      unitRef="shares">4000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="id07f23c6df2f4b1a87836bcd367b4124_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTo0NzAxNDU2YTY5MGM0MDgxODI3YTk2ZDI4MmFkZWRkZC90YWJsZXJhbmdlOjQ3MDE0NTZhNjkwYzQwODE4MjdhOTZkMjgyYWRlZGRkXzEtNC0xLTEtMjE3OTc0_f1f24f3f-51e5-4ad7-b673-609a8e17c008"
      unitRef="usdPerShare">144.33</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="i93510741c63949d48a3f1ad57bd35bac_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTo0NzAxNDU2YTY5MGM0MDgxODI3YTk2ZDI4MmFkZWRkZC90YWJsZXJhbmdlOjQ3MDE0NTZhNjkwYzQwODE4MjdhOTZkMjgyYWRlZGRkXzItMi0xLTEtMjE3OTc0_e362b88d-6f1c-49f1-948f-c82421724869"
      unitRef="shares">6000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i93510741c63949d48a3f1ad57bd35bac_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTo0NzAxNDU2YTY5MGM0MDgxODI3YTk2ZDI4MmFkZWRkZC90YWJsZXJhbmdlOjQ3MDE0NTZhNjkwYzQwODE4MjdhOTZkMjgyYWRlZGRkXzItNC0xLTEtMjE3OTc0_84ccb0f2-7128-4dbb-bb52-b3041cf65aab"
      unitRef="usdPerShare">96.33</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i93510741c63949d48a3f1ad57bd35bac_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTo0NzAxNDU2YTY5MGM0MDgxODI3YTk2ZDI4MmFkZWRkZC90YWJsZXJhbmdlOjQ3MDE0NTZhNjkwYzQwODE4MjdhOTZkMjgyYWRlZGRkXzMtMi0xLTEtMjE3OTc0_09c04a74-be03-42d7-b996-9d70d7205ce1"
      unitRef="shares">4000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="i93510741c63949d48a3f1ad57bd35bac_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTo0NzAxNDU2YTY5MGM0MDgxODI3YTk2ZDI4MmFkZWRkZC90YWJsZXJhbmdlOjQ3MDE0NTZhNjkwYzQwODE4MjdhOTZkMjgyYWRlZGRkXzMtNC0xLTEtMjE3OTc0_ffaa2617-64b0-4687-8193-620d4606a976"
      unitRef="usdPerShare">144.33</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i8763390a7a5848ec86ca75289b16ebf1_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTo0NzAxNDU2YTY5MGM0MDgxODI3YTk2ZDI4MmFkZWRkZC90YWJsZXJhbmdlOjQ3MDE0NTZhNjkwYzQwODE4MjdhOTZkMjgyYWRlZGRkXzUtMi0xLTEtMjE3OTc0_46ef1582-877c-4edd-98f5-816640372ba5"
      unitRef="shares">6000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i8763390a7a5848ec86ca75289b16ebf1_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90YWJsZTo0NzAxNDU2YTY5MGM0MDgxODI3YTk2ZDI4MmFkZWRkZC90YWJsZXJhbmdlOjQ3MDE0NTZhNjkwYzQwODE4MjdhOTZkMjgyYWRlZGRkXzUtNC0xLTEtMjE3OTc0_9bbcbe8f-2343-4898-89cb-ac730f86a9b8"
      unitRef="usdPerShare">96.33</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i93510741c63949d48a3f1ad57bd35bac_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzYyNjY_0434634c-2b16-40b4-86e3-56b3718b5e4c">P1Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions
      contextRef="i8763390a7a5848ec86ca75289b16ebf1_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzU0OTc1NTgyMTE4MA_e43046d0-0b26-492d-b936-f5de7e8a297a"
      unitRef="usd">300000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i93510741c63949d48a3f1ad57bd35bac_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTIvZnJhZzpiMTNhYjIyN2U4MzM0ZjIyOWRkNThlNWUxOGY2Y2EwNi90ZXh0cmVnaW9uOmIxM2FiMjI3ZTgzMzRmMjI5ZGQ1OGU1ZTE4ZjZjYTA2XzU0OTc1NTgyMTIwNw_6e0cd3d2-2507-4d32-b98f-fffe6b01f03e">P0Y6M</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:IncomeTaxDisclosureTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4XzMzNTc_07221421-42d8-4511-910a-7d5ef21ecfad">Income Taxes&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The effective tax rate as compared to the U.S. federal statutory rate of 21% differs primarily due to change in valuation allowance against deferred taxes and non-deductible expenses, partially offset by state income taxes and tax benefits associated with stock-based compensation expense and research and development tax credits.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Set forth below is a reconciliation of the components that caused our provision for income taxes to differ from amounts computed by applying the United States federal statutory rate:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.104%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.014%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;U.S. federal statutory income tax rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State and local income taxes, net of federal benefit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;9&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(214)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(426)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-deductible officers' compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;47&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Meals and entertainment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Change in valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(37)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;795&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other permanent differences&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Research and development tax credits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(205)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Provision for income taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The provision for income tax consists of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.736%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.905%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.175%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Federal&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,313&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,982&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;State and local&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;686&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;346&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,444&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total current&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,999&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;366&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;9,426&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(854)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(10,966)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;27,982&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;State and local&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;257&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,306&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total deferred&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(597)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;340&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,002&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total income tax provision&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,402&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;706&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,428&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The components of deferred tax assets (liabilities) were as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:74.706%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred income tax assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net operating loss carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,849&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Research and development tax credits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,558&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,966&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized research and software costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,706&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,105&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,965&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Lease liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,260&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,983&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,614&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,853&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;62,045&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;47,616&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(43,776)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(17,217)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax assets, net of valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;30,399&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized research and software costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(9,972)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Property and equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,914)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5,024)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Intangible assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(940)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,558)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized commissions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,217)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,296)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Lease asset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6,249)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(11,056)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,634)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,171)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(18,954)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32,077)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total net deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(685)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,678)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At December&#160;31, 2022, we had state net operating loss carryforwards $66.0&#160;million. The state net operating losses will begin to expire in 2028. At December&#160;31, 2022, we also had federal and state research and development credit carryforwards of $8.7&#160;million and $19.3&#160;million, respectively. The federal credit carryforwards will begin to expire in 2040, while the state credit carryforwards apply indefinitely. Utilization of our net operating loss and credit carryforwards may be subject to annual limitation due to the ownership change limitations provided by the Internal Revenue Code and similar state provisions. We have undertaken an analysis and have determined that there are no limitations on the tax attributes at December&#160;31, 2022. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:112%"&gt;The change in the valuation allowance are as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.104%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.014%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance, at beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,217&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increase in valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,559&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,217&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance, at end of year&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,217&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:1pt;font-weight:400;line-height:120%"&gt;&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following is a reconciliation of the total amounts of reserves for unrecognized tax benefits from uncertain tax positions (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.104%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.014%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unrecognized tax benefit beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,816&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,141&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,421&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases-tax positions in current year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,720&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unrecognized tax benefit end of year&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;9,455&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,816&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,141&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:7pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The unrecognized tax benefits are recorded as a reduction to the deferred tax assets and liabilities.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At December&#160;31, 2022 and 2021, we had no accrued interest and penalties related to uncertain income tax positions. We do not anticipate that the amount of unrecognized tax benefits will significantly increase or decrease within the next twelve months. &lt;/span&gt;&lt;/div&gt;We are subject to taxation in the United States and various states. Due to the net operating loss carryforwards, our federal and state returns are open to examination by the Internal Revenue Service and state jurisdictions for all years since inception.</us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4XzU0OTc1NTgyMzMwOQ_632be66a-f972-4205-be42-0b97e3cca011"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4XzMzMzc_ccf6d4bb-caee-43e0-b1c7-716dcc684301">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Set forth below is a reconciliation of the components that caused our provision for income taxes to differ from amounts computed by applying the United States federal statutory rate:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.104%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.014%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;U.S. federal statutory income tax rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State and local income taxes, net of federal benefit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;9&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(214)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(426)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-deductible officers' compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;47&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Meals and entertainment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Change in valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(37)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;795&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other permanent differences&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Research and development tax credits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(205)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Provision for income taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;41&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzItMS0xLTEtMjE3OTc0_632be66a-f972-4205-be42-0b97e3cca011"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzItMy0xLTEtMjE3OTc0_62c433ea-f6d0-4c3c-a6eb-1638c3a31631"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzItNS0xLTEtMjE3OTc0_ed0ec3ac-5c59-49ad-ae05-6fb9378ad74a"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzMtMS0xLTEtMjE3OTc0_e5357ad4-78c9-44c7-af22-96d4fe792c7d"
      unitRef="number">0.09</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzMtMy0xLTEtMjE3OTc0_787a45e8-d380-42a7-b29a-7cd5730137bc"
      unitRef="number">-2.14</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzMtNS0xLTEtMjE3OTc0_4be1ee09-51b0-4596-a0be-b5d7b19d26c9"
      unitRef="number">0.03</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzQtMS0xLTEtMjE3OTc0_3b031ec7-a67c-4f8c-883d-61ee990b9ad0"
      unitRef="number">0.07</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzQtMy0xLTEtMjE3OTc0_516b3f70-16b6-41d2-9d44-18b32044f952"
      unitRef="number">-4.26</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzQtNS0xLTEtMjE3OTc0_c520af4e-f528-4cb7-9acd-f90217800704"
      unitRef="number">-0.03</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <appf:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOfficerCompensationPercent
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzUtMS0xLTEtMjQ1MTEx_9eb94b3a-1959-4ba8-a82f-6e3fc0771ca6"
      unitRef="number">-0.06</appf:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOfficerCompensationPercent>
    <appf:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOfficerCompensationPercent
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzUtMy0xLTEtMjQ1MTEx_a8487734-e5c4-4393-9d8e-5bd729a5cc6a"
      unitRef="number">0.47</appf:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOfficerCompensationPercent>
    <appf:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOfficerCompensationPercent
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzUtNS0xLTEtMjQ1MTEx_a2358e7c-f3d3-4317-aae2-e07a70ad8f64"
      unitRef="number">0</appf:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseOfficerCompensationPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzUtMS0xLTEtMjE3OTc0_7ce00bdf-8d3a-4e1d-b649-cf457f9e0cdb"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzUtMy0xLTEtMjE3OTc0_de0a6558-6586-4ded-8f11-3899df440e77"
      unitRef="number">0.03</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment>
    <us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzUtNS0xLTEtMjE3OTc0_37aa89c5-0514-4533-93f1-7716d203514b"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationNondeductibleExpenseMealsAndEntertainment>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzctMS0xLTEtMjE3OTc0_c08ee7c5-6935-49e3-bfb8-afac91dfbe76"
      unitRef="number">-0.37</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzctMy0xLTEtMjE3OTc0_de666e20-f569-44c6-ac86-99eb214835f3"
      unitRef="number">7.95</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzctNS0xLTEtMjE3OTc0_19ea6d43-e644-48a9-a883-bae9f0e6eebb"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzktMS0xLTEtMjE3OTc0_3f42e08f-061f-4321-9dce-8826a4434e82"
      unitRef="number">-0.01</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzktMy0xLTEtMjE3OTc0_26692274-e9f9-4c47-895e-475fa423865d"
      unitRef="number">0.20</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzktNS0xLTEtMjE3OTc0_34bb6c75-f306-4f2c-9af7-fca09ed99484"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzEwLTEtMS0xLTIxNzk3NA_f6723a57-5e8c-4065-9a8e-8e02eb862532"
      unitRef="number">-0.05</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzEwLTMtMS0xLTIxNzk3NA_13cf379e-46b7-4586-92e6-43e3b642e030"
      unitRef="number">2.05</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzEwLTUtMS0xLTIxNzk3NA_21bdded4-5045-43fe-98e8-97992089b87f"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzExLTEtMS0xLTIxNzk3NA_36a1f0d3-ab44-48fe-bfe4-51151790d745"
      unitRef="number">-0.02</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzExLTMtMS0xLTIxNzk3NA_4a8959c3-5316-433d-83a9-ff86280c79cf"
      unitRef="number">0.41</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTowYWYwY2U2N2VhYjY0ZGE4Yjc4N2NhZTQ4MWNhMjY5NS90YWJsZXJhbmdlOjBhZjBjZTY3ZWFiNjRkYThiNzg3Y2FlNDgxY2EyNjk1XzExLTUtMS0xLTIxNzk3NA_2a209df8-ef35-436f-88c8-ba0a65034b97"
      unitRef="number">0.20</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4XzMzMzg_af2827cb-9299-4b46-bcb4-d345333c999b">&lt;div style="text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The provision for income tax consists of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.736%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.905%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.175%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Federal&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,313&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,982&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;State and local&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;686&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;346&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,444&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total current&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,999&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;366&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;9,426&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(854)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(10,966)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;27,982&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;State and local&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;257&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,306&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total deferred&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(597)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;340&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,002&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total income tax provision&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,402&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;706&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,428&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzMtMS0xLTEtMjE3OTc0_8d184818-fd8e-462a-9380-a5c8971a4ffa"
      unitRef="usd">1313000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzMtMy0xLTEtMjE3OTc0_41395e85-abdb-47c7-b138-37e4ca9e2691"
      unitRef="usd">20000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzMtNS0xLTEtMjE3OTc0_5584a4e9-2cc9-49ba-8a7b-a31ef480fcac"
      unitRef="usd">3982000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzQtMS0xLTEtMjE3OTc0_246bdb55-9f76-4d20-9903-c67de9ce2488"
      unitRef="usd">686000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzQtMy0xLTEtMjE3OTc0_dd211e0f-b709-42bc-b134-846df66ed7be"
      unitRef="usd">346000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzQtNS0xLTEtMjE3OTc0_37d73746-cb9f-40b7-8895-e911f5a9f11f"
      unitRef="usd">5444000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzUtMS0xLTEtMjE3OTc0_a6bdd334-b25e-46c2-bd1d-cabe900e1e23"
      unitRef="usd">1999000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzUtMy0xLTEtMjE3OTc0_ba42e60a-aa03-4ec2-a52d-52837f0a4a92"
      unitRef="usd">366000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzUtNS0xLTEtMjE3OTc0_c503a784-fac5-4fef-a57b-26dceb72365c"
      unitRef="usd">9426000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzctMS0xLTEtMjE3OTc0_36d93e2c-d71d-47bc-a168-9c16efc053ef"
      unitRef="usd">-854000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzctMy0xLTEtMjE3OTc0_7e50e44c-993b-45e9-be05-4c1d556c80bf"
      unitRef="usd">-10966000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzctNS0xLTEtMjE3OTc0_ac458633-6da1-48ee-8164-403e0f823889"
      unitRef="usd">27982000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzgtMS0xLTEtMjE3OTc0_240667c1-c86f-46d6-b8e8-9e1856466029"
      unitRef="usd">257000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzgtMy0xLTEtMjE3OTc0_a590ba45-c633-4a54-b997-ef254b60834f"
      unitRef="usd">11306000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzgtNS0xLTEtMjE3OTc0_3b98d717-d20e-4646-9727-67beb3d75c1c"
      unitRef="usd">1020000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzktMS0xLTEtMjE3OTc0_cb5487c3-3898-4c30-9273-91f868bb7e6e"
      unitRef="usd">-597000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzktMy0xLTEtMjE3OTc0_4550c3cf-8ca7-48a1-8921-39f93ef5eff1"
      unitRef="usd">340000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzktNS0xLTEtMjE3OTc0_7df9b321-0844-4a35-bd94-4f4608f60322"
      unitRef="usd">29002000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzEwLTEtMS0xLTIxNzk3NA_90cd03bd-5683-4c55-b324-0071a9e35bcb"
      unitRef="usd">1402000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzEwLTMtMS0xLTIxNzk3NA_0ad3f4cd-75e0-4843-9264-b8d723c283b3"
      unitRef="usd">706000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpjNmI3YzMyOGY5ZmM0NzM4OGQxN2Y0NDZjODE4ZGQ3NC90YWJsZXJhbmdlOmM2YjdjMzI4ZjlmYzQ3Mzg4ZDE3ZjQ0NmM4MThkZDc0XzEwLTUtMS0xLTIxNzk3NA_7354dee8-ec42-4d50-bd20-c8c204e677bd"
      unitRef="usd">38428000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4XzMzNTk_ca425daf-89be-4d5c-80a8-cbe77e76bfed">&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The components of deferred tax assets (liabilities) were as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:74.706%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.631%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred income tax assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net operating loss carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,849&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Research and development tax credits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,558&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,966&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized research and software costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,706&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,105&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,965&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Lease liability&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,260&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,983&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,614&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,853&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;62,045&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;47,616&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(43,776)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(17,217)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax assets, net of valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;30,399&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized research and software costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(9,972)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Property and equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,914)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5,024)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Intangible assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(940)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,558)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Capitalized commissions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,217)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,296)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Lease asset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6,249)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(11,056)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,634)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,171)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(18,954)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32,077)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total net deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(685)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,678)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzMtMS0xLTEtMjE3OTc0_f3a7ff75-1210-47cf-adfa-231d0100fcf9"
      unitRef="usd">5802000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzMtMy0xLTEtMjE3OTc0_265e1c27-86f6-4e75-866a-7fa2da583f02"
      unitRef="usd">10849000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzQtMS0xLTEtMjE3OTc0_428578e7-aee2-4d45-bd2e-2f7b6c698921"
      unitRef="usd">18558000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzQtMy0xLTEtMjE3OTc0_080c3727-8cef-4bd4-9afa-b80de81b9bed"
      unitRef="usd">15966000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
    <us-gaap:DeferredTaxAssetsInProcessResearchAndDevelopment
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzUtMS0xLTEtMjQ5NTc4_974841f7-c0ae-4c27-a948-5e4c2c6cde6d"
      unitRef="usd">14706000</us-gaap:DeferredTaxAssetsInProcessResearchAndDevelopment>
    <us-gaap:DeferredTaxAssetsInProcessResearchAndDevelopment
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzUtMy0xLTEtMjQ5NTc4_892f92f2-a354-416c-af76-1738208aea3e"
      unitRef="usd">0</us-gaap:DeferredTaxAssetsInProcessResearchAndDevelopment>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzYtMS0xLTEtMjE3OTc0_8e80ac42-d895-414c-b1a3-9ab9db3c7a10"
      unitRef="usd">5105000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzYtMy0xLTEtMjE3OTc0_dc2963ae-c42a-4e14-9281-d7aa7a357b08"
      unitRef="usd">3965000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <appf:DeferredTaxAssetsLeasingArrangements
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzctMS0xLTEtMjE3OTc0_e93a7167-9066-4b4a-a6d9-0279085234ac"
      unitRef="usd">14260000</appf:DeferredTaxAssetsLeasingArrangements>
    <appf:DeferredTaxAssetsLeasingArrangements
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzctMy0xLTEtMjE3OTc0_ed32d389-38bb-4dd7-9554-fe4d92917ba7"
      unitRef="usd">13983000</appf:DeferredTaxAssetsLeasingArrangements>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzgtMS0xLTEtMjE3OTc0_3fe14726-dd91-4278-8eaa-0dcb1e163a83"
      unitRef="usd">3614000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzgtMy0xLTEtMjE3OTc0_60ce5767-df75-4f98-8d58-123aef35aaf6"
      unitRef="usd">2853000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzktMS0xLTEtMjE3OTc0_b86eb90d-3acc-4121-be06-301203c64199"
      unitRef="usd">62045000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzktMy0xLTEtMjE3OTc0_471ab641-5ef2-4004-a09f-7357f743d26a"
      unitRef="usd">47616000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzEwLTEtMS0xLTIxNzk3NA_5a1de36a-b116-4918-902b-f0a7e964af0a"
      unitRef="usd">43776000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzEwLTMtMS0xLTIxNzk3NA_77e2ab40-6e9c-4ece-b161-6df6a5abbfed"
      unitRef="usd">17217000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzExLTEtMS0xLTIxNzk3NA_9c5d0e44-baae-44ca-bb4f-c356bfdbaa97"
      unitRef="usd">18269000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzExLTMtMS0xLTIxNzk3NA_7b87c9b3-b1f8-4656-ba1b-831fb40c2052"
      unitRef="usd">30399000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxLiabilitiesDeferredExpenseCapitalizedResearchAndDevelopmentCosts
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE0LTEtMS0xLTI0OTU5OQ_146db6cd-333f-433f-a640-c77f20ec02a6"
      unitRef="usd">0</us-gaap:DeferredTaxLiabilitiesDeferredExpenseCapitalizedResearchAndDevelopmentCosts>
    <us-gaap:DeferredTaxLiabilitiesDeferredExpenseCapitalizedResearchAndDevelopmentCosts
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE0LTMtMS0xLTI0OTU4Nw_d4eb84de-92d3-4ed2-8f79-3a103485cbdf"
      unitRef="usd">9972000</us-gaap:DeferredTaxLiabilitiesDeferredExpenseCapitalizedResearchAndDevelopmentCosts>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzEzLTEtMS0xLTIxNzk3NA_275cc9b6-7c3d-433c-9861-a272b415e8ec"
      unitRef="usd">4914000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzEzLTMtMS0xLTIxNzk3NA_c8ad53ac-3e52-45ba-8104-b0fc40c60723"
      unitRef="usd">5024000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE0LTEtMS0xLTIxNzk3NA_4bf3f524-8e7a-491c-81b1-2a31e4e7f68c"
      unitRef="usd">940000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE0LTMtMS0xLTIxNzk3NA_4a489e6a-200c-4d7a-a4ed-021fb0219641"
      unitRef="usd">1558000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets>
    <appf:DeferredTaxLiabilitiesCapitalizedCommissions
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE1LTEtMS0xLTIxNzk3NA_1480b526-283a-4267-8518-473f083567e9"
      unitRef="usd">4217000</appf:DeferredTaxLiabilitiesCapitalizedCommissions>
    <appf:DeferredTaxLiabilitiesCapitalizedCommissions
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE1LTMtMS0xLTIxNzk3NA_1f87ab2f-5ff8-47da-aab5-c3a39af00869"
      unitRef="usd">3296000</appf:DeferredTaxLiabilitiesCapitalizedCommissions>
    <us-gaap:DeferredTaxLiabilitiesLeasingArrangements
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE3LTEtMS0xLTIxNzk3NA_86dd1393-a541-43a6-af99-40ffa39b8f55"
      unitRef="usd">6249000</us-gaap:DeferredTaxLiabilitiesLeasingArrangements>
    <us-gaap:DeferredTaxLiabilitiesLeasingArrangements
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE3LTMtMS0xLTIxNzk3NA_dc8fa740-cc97-4e35-b5f1-ff9f7d2c163e"
      unitRef="usd">11056000</us-gaap:DeferredTaxLiabilitiesLeasingArrangements>
    <us-gaap:DeferredTaxLiabilitiesOther
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE4LTEtMS0xLTIxNzk3NA_30476a89-4030-4a47-9808-9bb353b6bade"
      unitRef="usd">2634000</us-gaap:DeferredTaxLiabilitiesOther>
    <us-gaap:DeferredTaxLiabilitiesOther
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE4LTMtMS0xLTIxNzk3NA_de82a0cd-fed9-45cc-91d0-e2f302657ecd"
      unitRef="usd">1171000</us-gaap:DeferredTaxLiabilitiesOther>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE5LTEtMS0xLTIxNzk3NA_5bbdf2d1-ab91-48f9-8b60-536d4e332cb4"
      unitRef="usd">18954000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzE5LTMtMS0xLTIxNzk3NA_4541d876-5044-49bb-bd06-1580978d60cf"
      unitRef="usd">32077000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzIwLTEtMS0xLTIxNzk3NA_6676e04f-4e77-4b6c-b910-9f36b808bba7"
      unitRef="usd">685000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmMDFmNWIyNzE5ZjA0YzUwOGVjZThhZTJjZDJmMDY3Ni90YWJsZXJhbmdlOmYwMWY1YjI3MTlmMDRjNTA4ZWNlOGFlMmNkMmYwNjc2XzIwLTMtMS0xLTIxNzk3NA_1d4c6630-3b99-4711-8fc8-756c734311ab"
      unitRef="usd">1678000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:OperatingLossCarryforwards
      contextRef="i2d1226bd0f02418bae67abad5c244341_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4Xzc2NA_6df8196a-f923-482c-bd8f-31778cf522c2"
      unitRef="usd">66000000</us-gaap:OperatingLossCarryforwards>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="i8accca143ca241a7a01feab369ded42e_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4Xzk4Nw_c88a8c0c-6e62-400d-8979-534eaf995beb"
      unitRef="usd">8700000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="id3ebfe2a99484c0cbc4e002aabcf5062_I20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4Xzk5NA_5b24e18a-26ef-462d-b018-659a7ccca661"
      unitRef="usd">19300000</us-gaap:TaxCreditCarryforwardAmount>
    <us-gaap:SummaryOfValuationAllowanceTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4XzMzNTU_a7147d35-0e34-4b1c-b52c-7e27c5b66028">&lt;div style="margin-bottom:6pt;margin-top:3pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:112%"&gt;The change in the valuation allowance are as follows (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.104%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.014%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance, at beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,217&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increase in valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,559&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,217&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance, at end of year&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;17,217&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:SummaryOfValuationAllowanceTextBlock>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmY2Q5ZmY0MTU0ZDM0MjBmOTBhNmUzNzkzZDA0N2MyNC90YWJsZXJhbmdlOmZjZDlmZjQxNTRkMzQyMGY5MGE2ZTM3OTNkMDQ3YzI0XzItMS0xLTEtMjE3OTc0_0e842347-d399-4619-af68-0daa487dc5d6"
      unitRef="usd">17217000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmY2Q5ZmY0MTU0ZDM0MjBmOTBhNmUzNzkzZDA0N2MyNC90YWJsZXJhbmdlOmZjZDlmZjQxNTRkMzQyMGY5MGE2ZTM3OTNkMDQ3YzI0XzItMy0xLTEtMjE3OTc0_4de4b2bd-4933-4b49-8788-acb6ccdf919a"
      unitRef="usd">0</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="id6e34c5cedfb495280df512e0d435d87_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmY2Q5ZmY0MTU0ZDM0MjBmOTBhNmUzNzkzZDA0N2MyNC90YWJsZXJhbmdlOmZjZDlmZjQxNTRkMzQyMGY5MGE2ZTM3OTNkMDQ3YzI0XzItNS0xLTEtMjE3OTc0_89a23e13-d1e0-4745-a14e-266b1c8630fd"
      unitRef="usd">0</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmY2Q5ZmY0MTU0ZDM0MjBmOTBhNmUzNzkzZDA0N2MyNC90YWJsZXJhbmdlOmZjZDlmZjQxNTRkMzQyMGY5MGE2ZTM3OTNkMDQ3YzI0XzMtMS0xLTEtMjE3OTc0_28afbf6d-121e-4166-856b-4f4485af8df9"
      unitRef="usd">26559000</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
    <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmY2Q5ZmY0MTU0ZDM0MjBmOTBhNmUzNzkzZDA0N2MyNC90YWJsZXJhbmdlOmZjZDlmZjQxNTRkMzQyMGY5MGE2ZTM3OTNkMDQ3YzI0XzMtMy0xLTEtMjE3OTc0_ce8c80bc-fa0f-4313-8e74-f61f711f9317"
      unitRef="usd">17217000</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
    <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmY2Q5ZmY0MTU0ZDM0MjBmOTBhNmUzNzkzZDA0N2MyNC90YWJsZXJhbmdlOmZjZDlmZjQxNTRkMzQyMGY5MGE2ZTM3OTNkMDQ3YzI0XzMtNS0xLTEtMjE3OTc0_00678230-4d2b-4ed6-be13-bfec7f21e5b8"
      unitRef="usd">0</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmY2Q5ZmY0MTU0ZDM0MjBmOTBhNmUzNzkzZDA0N2MyNC90YWJsZXJhbmdlOmZjZDlmZjQxNTRkMzQyMGY5MGE2ZTM3OTNkMDQ3YzI0XzQtMS0xLTEtMjE3OTc0_e83ba1fd-e606-47cf-971c-347726318d73"
      unitRef="usd">43776000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmY2Q5ZmY0MTU0ZDM0MjBmOTBhNmUzNzkzZDA0N2MyNC90YWJsZXJhbmdlOmZjZDlmZjQxNTRkMzQyMGY5MGE2ZTM3OTNkMDQ3YzI0XzQtMy0xLTEtMjE3OTc0_c716ee4c-1f4f-4b52-a389-ac953e4ca6b3"
      unitRef="usd">17217000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZTpmY2Q5ZmY0MTU0ZDM0MjBmOTBhNmUzNzkzZDA0N2MyNC90YWJsZXJhbmdlOmZjZDlmZjQxNTRkMzQyMGY5MGE2ZTM3OTNkMDQ3YzI0XzQtNS0xLTEtMjE3OTc0_3a03c5ce-1a73-470a-a06f-c346e6963d97"
      unitRef="usd">0</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4XzMzMzU_d9689e58-88ae-4709-be42-3a764b471eb6">&lt;div style="text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following is a reconciliation of the total amounts of reserves for unrecognized tax benefits from uncertain tax positions (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.104%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.011%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.014%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div style="text-align:center"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unrecognized tax benefit beginning of year&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,816&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,141&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,421&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases-tax positions in current year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,720&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Unrecognized tax benefit end of year&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;9,455&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,816&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,141&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZToyZTQyYWQ0ZDgwMTM0MzE5YmYzZTI1ZmVhYTIwMDU3Yy90YWJsZXJhbmdlOjJlNDJhZDRkODAxMzQzMTliZjNlMjVmZWFhMjAwNTdjXzItMS0xLTEtMjE3OTc0_529984e8-bddc-410d-94f2-2b7109904d56"
      unitRef="usd">7816000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZToyZTQyYWQ0ZDgwMTM0MzE5YmYzZTI1ZmVhYTIwMDU3Yy90YWJsZXJhbmdlOjJlNDJhZDRkODAxMzQzMTliZjNlMjVmZWFhMjAwNTdjXzItMy0xLTEtMjE3OTc0_faa02446-a232-4c04-bb86-0a7655a6141a"
      unitRef="usd">6141000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="id6e34c5cedfb495280df512e0d435d87_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZToyZTQyYWQ0ZDgwMTM0MzE5YmYzZTI1ZmVhYTIwMDU3Yy90YWJsZXJhbmdlOjJlNDJhZDRkODAxMzQzMTliZjNlMjVmZWFhMjAwNTdjXzItNS0xLTEtMjE3OTc0_c3db24a5-446a-4bb4-a940-500ccde76c28"
      unitRef="usd">4421000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZToyZTQyYWQ0ZDgwMTM0MzE5YmYzZTI1ZmVhYTIwMDU3Yy90YWJsZXJhbmdlOjJlNDJhZDRkODAxMzQzMTliZjNlMjVmZWFhMjAwNTdjXzQtMS0xLTEtMjE3OTc0_9ec3e732-3f27-495f-b692-7e7746a729bf"
      unitRef="usd">1639000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZToyZTQyYWQ0ZDgwMTM0MzE5YmYzZTI1ZmVhYTIwMDU3Yy90YWJsZXJhbmdlOjJlNDJhZDRkODAxMzQzMTliZjNlMjVmZWFhMjAwNTdjXzQtMy0xLTEtMjE3OTc0_ceabf543-0240-4b9a-97b4-0120049c1dc5"
      unitRef="usd">1675000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZToyZTQyYWQ0ZDgwMTM0MzE5YmYzZTI1ZmVhYTIwMDU3Yy90YWJsZXJhbmdlOjJlNDJhZDRkODAxMzQzMTliZjNlMjVmZWFhMjAwNTdjXzQtNS0xLTEtMjE3OTc0_de75abc1-e3b8-46a3-a141-fb9a156e141b"
      unitRef="usd">1720000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZToyZTQyYWQ0ZDgwMTM0MzE5YmYzZTI1ZmVhYTIwMDU3Yy90YWJsZXJhbmdlOjJlNDJhZDRkODAxMzQzMTliZjNlMjVmZWFhMjAwNTdjXzUtMS0xLTEtMjE3OTc0_d5aefb33-1a39-451f-962f-e91187746cae"
      unitRef="usd">9455000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZToyZTQyYWQ0ZDgwMTM0MzE5YmYzZTI1ZmVhYTIwMDU3Yy90YWJsZXJhbmdlOjJlNDJhZDRkODAxMzQzMTliZjNlMjVmZWFhMjAwNTdjXzUtMy0xLTEtMjE3OTc0_35cf4ea5-250f-4de6-b053-966a112eb543"
      unitRef="usd">7816000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="ia4e42dfbd9ab4e1696f9bf157dc5eece_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90YWJsZToyZTQyYWQ0ZDgwMTM0MzE5YmYzZTI1ZmVhYTIwMDU3Yy90YWJsZXJhbmdlOjJlNDJhZDRkODAxMzQzMTliZjNlMjVmZWFhMjAwNTdjXzUtNS0xLTEtMjE3OTc0_00ff3ed3-2454-4074-8598-43cb8190313e"
      unitRef="usd">6141000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:IncomeTaxExaminationPenaltiesAndInterestAccrued
      contextRef="if54915a015e84a12a062a577eca8bccd_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4XzI4MTY_cf1add29-2d8c-4abe-b0f8-08308fc8903f"
      unitRef="usd">0</us-gaap:IncomeTaxExaminationPenaltiesAndInterestAccrued>
    <us-gaap:IncomeTaxExaminationPenaltiesAndInterestAccrued
      contextRef="i0706e23451794b11aa4b0abc25d9abf3_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTUvZnJhZzo2MmNmOWI5NDQ0NTY0YTVhYWZjOGIwYzU1N2VhMmFhOC90ZXh0cmVnaW9uOjYyY2Y5Yjk0NDQ1NjRhNWFhZmM4YjBjNTU3ZWEyYWE4XzI4MTY_d2cf221e-167c-48a0-9938-a5b7783b1a11"
      unitRef="usd">0</us-gaap:IncomeTaxExaminationPenaltiesAndInterestAccrued>
    <us-gaap:SegmentReportingDisclosureTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90ZXh0cmVnaW9uOjQyOTRmY2ExOWZlMDQ1ZTg5NDRlMjQxYTk0MjEyMGI3XzI0MQ_5422623c-0e0f-430e-a44b-be35c11cb97b">Revenue and Other Information&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table presents our revenue categories (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:12pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:63.269%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.043%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.043%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.046%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Core solutions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;132,541&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;105,148&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;100,938&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Value Added Services&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;327,636&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;241,289&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;195,146&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,706&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,933&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,972&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;471,883&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;359,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;310,056&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:6pt;margin-top:7pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our revenue is generated primarily from United States customers. All of our property and equipment is located in the United States.&lt;/span&gt;&lt;/div&gt;</us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:ScheduleOfProductInformationTableTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90ZXh0cmVnaW9uOjQyOTRmY2ExOWZlMDQ1ZTg5NDRlMjQxYTk0MjEyMGI3XzI0MA_aff10ad4-3c17-4931-92b9-84de2f22d9a6">&lt;div style="margin-bottom:6pt;margin-top:10pt;text-align:justify;text-indent:36pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table presents our revenue categories (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:1pt;margin-top:12pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:63.269%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.043%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.043%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.046%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Core solutions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;132,541&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;105,148&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;100,938&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Value Added Services&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;327,636&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;241,289&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;195,146&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,706&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,933&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,972&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Total revenue&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;471,883&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;359,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;310,056&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfProductInformationTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i2b79e1ce709c4d17b0fc1172cf2f9795_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzItMi0xLTEtMjE3OTc0_3a5eb333-017e-405a-98b8-88cff37c3aba"
      unitRef="usd">132541000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ia1a94ab455bc4876ab9a70db5a58c7eb_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzItNC0xLTEtMjE3OTc0_9f95ebea-87f1-479d-81fb-351307904115"
      unitRef="usd">105148000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i49ad3d82a8a2467bafeb8a93cc25d274_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzItNi0xLTEtMjE3OTc0_167a8c60-726d-4831-aa8e-b5b4a4ff115d"
      unitRef="usd">100938000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib7f25b66e6cb4c6f8e384b4efc219215_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzMtMi0xLTEtMjE3OTc0_b26bf8cb-a1b3-4245-b339-6d9ad8f8818f"
      unitRef="usd">327636000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i9e5a6b628c4745c2ae9e3a7feebddfad_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzMtNC0xLTEtMjE3OTc0_ae979ab7-6533-42d1-a98a-1f8062a26bd9"
      unitRef="usd">241289000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i5b3df90813204cccbc1381715f5485dd_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzMtNi0xLTEtMjE3OTc0_40f7e04b-3628-4bec-bf3b-9fb921e7c81d"
      unitRef="usd">195146000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i586d703595cb4b7688a06a99cf3251db_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzQtMi0xLTEtMjE3OTc0_ee18c90d-b705-4158-88fa-c8c8157e403e"
      unitRef="usd">11706000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i008f5b27aedd47b684ae849ccb9b8de0_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzQtNC0xLTEtMjE3OTc0_8530ba84-3c41-4506-a885-59da9d729cc5"
      unitRef="usd">12933000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8ee25b3ad7c74ed8b97f95a7d436b31c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzQtNi0xLTEtMjE3OTc0_a720b379-1313-4165-935c-82f15089a15a"
      unitRef="usd">13972000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzUtMi0xLTEtMjE3OTc0_24221514-c110-46f2-be47-1085403dfb5b"
      unitRef="usd">471883000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzUtNC0xLTEtMjE3OTc0_79ccd785-844e-481b-9979-b4372c213272"
      unitRef="usd">359370000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMTgvZnJhZzo0Mjk0ZmNhMTlmZTA0NWU4OTQ0ZTI0MWE5NDIxMjBiNy90YWJsZTo2NTZiNDQzNmQ4NDg0NGU4YmNmZGM5ZTI1NDJjMDM4OS90YWJsZXJhbmdlOjY1NmI0NDM2ZDg0ODQ0ZThiY2ZkYzllMjU0MmMwMzg5XzUtNi0xLTEtMjE3OTc0_b23e3c76-29f5-4232-832c-c2a55d28f882"
      unitRef="usd">310056000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMjEvZnJhZzpmNjgxZjBjMTA0NTg0MTcyYjE0NTI0NDgzZmEwZWNjYi90ZXh0cmVnaW9uOmY2ODFmMGMxMDQ1ODQxNzJiMTQ1MjQ0ODNmYTBlY2NiXzI3OQ_33f388a1-f067-41ed-9679-5a75136a5407">Retirement PlansWe have a 401(k) retirement and savings plan made available to all employees. We may, at our discretion, make matching contributions to the 401(k) plan. Cash contributions to the plan were $5.9&#160;million, $4.0 million, and $3.2 million for the years ended December&#160;31, 2022, 2021 and 2020, respectively.</us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="iaf96ddeff8144bc3b28aa46d4110e252_D20220101-20221231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMjEvZnJhZzpmNjgxZjBjMTA0NTg0MTcyYjE0NTI0NDgzZmEwZWNjYi90ZXh0cmVnaW9uOmY2ODFmMGMxMDQ1ODQxNzJiMTQ1MjQ0ODNmYTBlY2NiXzIxNg_24480f80-dae1-4987-a92d-f6b87048f665"
      unitRef="usd">5900000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i7266ab91b07a42cb836e05e82a4f30c8_D20210101-20211231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMjEvZnJhZzpmNjgxZjBjMTA0NTg0MTcyYjE0NTI0NDgzZmEwZWNjYi90ZXh0cmVnaW9uOmY2ODFmMGMxMDQ1ODQxNzJiMTQ1MjQ0ODNmYTBlY2NiXzIyMA_8a4f5988-cb5d-4367-b090-b781407af17c"
      unitRef="usd">4000000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i25e463fb49d84a66a75908c0dcd54f71_D20200101-20201231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl8xMjEvZnJhZzpmNjgxZjBjMTA0NTg0MTcyYjE0NTI0NDgzZmEwZWNjYi90ZXh0cmVnaW9uOmY2ODFmMGMxMDQ1ODQxNzJiMTQ1MjQ0ODNmYTBlY2NiXzIyOA_f840d22e-e9df-4caf-8161-4f8a08e6035d"
      unitRef="usd">3200000</us-gaap:DefinedContributionPlanCostRecognized>
    <link:footnoteLink
      xlink:role="http://www.xbrl.org/2003/role/link"
      xlink:type="extended">
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi0xLTEtMS0yMTc5NzQ_7ece5d09-a985-41a9-9d5f-12ca304cbf13"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi0xLTEtMS0yMTc5NzQ_7ece5d09-a985-41a9-9d5f-12ca304cbf13"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy0zLTEtMS0yMTc5NzQ_efab966c-3794-44fc-bd5a-d07761a5cd28"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy0zLTEtMS0yMTc5NzQ_efab966c-3794-44fc-bd5a-d07761a5cd28"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC0zLTEtMS0yMTc5NzQ_4ae1f2c1-077e-4e12-b534-354dfed01ec7"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC0zLTEtMS0yMTc5NzQ_4ae1f2c1-077e-4e12-b534-354dfed01ec7"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC0xLTEtMS0yMTc5NzQ_aa049e6c-ff5d-4734-8592-07a6899a7fe3"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC0xLTEtMS0yMTc5NzQ_aa049e6c-ff5d-4734-8592-07a6899a7fe3"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy01LTEtMS0yMTc5NzQ_75785655-8b9f-4ea3-ae98-adf0fce751f6"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy01LTEtMS0yMTc5NzQ_75785655-8b9f-4ea3-ae98-adf0fce751f6"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi0zLTEtMS0yMTc5NzQ_4cd6c302-056a-48e1-b6e4-389016a5979a"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi0zLTEtMS0yMTc5NzQ_4cd6c302-056a-48e1-b6e4-389016a5979a"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC01LTEtMS0yMTc5NzQ_44d06417-c606-4a94-9643-14d387e93dc7"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC01LTEtMS0yMTc5NzQ_44d06417-c606-4a94-9643-14d387e93dc7"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy0xLTEtMS0yMTc5NzQ_a94b8a85-ef73-4232-8723-b735f1e424d1"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy0xLTEtMS0yMTc5NzQ_a94b8a85-ef73-4232-8723-b735f1e424d1"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS0zLTEtMS0yMTc5NzQ_4be93e50-37c3-49aa-83ad-2ea2329e5008"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS0zLTEtMS0yMTc5NzQ_4be93e50-37c3-49aa-83ad-2ea2329e5008"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS01LTEtMS0yMTc5NzQ_dceb9316-c228-474a-8f22-502b2efcb48a"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS01LTEtMS0yMTc5NzQ_dceb9316-c228-474a-8f22-502b2efcb48a"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi01LTEtMS0yMTc5NzQ_2c3bf749-12f5-470c-973f-f4b860308448"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi01LTEtMS0yMTc5NzQ_2c3bf749-12f5-470c-973f-f4b860308448"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS0xLTEtMS0yMTc5NzQ_f2b7b4ea-c6d1-495c-be6a-767a3be5c924"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS0xLTEtMS0yMTc5NzQ_f2b7b4ea-c6d1-495c-be6a-767a3be5c924"
          xlink:type="locator"/>
        <link:footnote id="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b" xlink:label="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-US"><xhtml:div style="margin-top:5pt"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">(1)</xhtml:span><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> Includes stock-based compensation expense as follows:</xhtml:span></xhtml:div><xhtml:div style="margin-top:5pt"><xhtml:table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><xhtml:tr><xhtml:td style="width:1.0%"/><xhtml:td style="width:25.215%"/><xhtml:td style="width:0.1%"/><xhtml:td style="width:1.0%"/><xhtml:td style="width:32.964%"/><xhtml:td style="width:0.1%"/><xhtml:td style="width:1.0%"/><xhtml:td style="width:11.911%"/><xhtml:td style="width:0.1%"/><xhtml:td style="width:0.1%"/><xhtml:td style="width:0.530%"/><xhtml:td style="width:0.1%"/><xhtml:td style="width:1.0%"/><xhtml:td style="width:11.911%"/><xhtml:td style="width:0.1%"/><xhtml:td style="width:0.1%"/><xhtml:td style="width:0.384%"/><xhtml:td style="width:0.1%"/><xhtml:td style="width:1.0%"/><xhtml:td style="width:11.185%"/><xhtml:td style="width:0.1%"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/></xhtml:tr><xhtml:tr><xhtml:td colspan="6" style="padding:0 1pt"/><xhtml:td
              colspan="15"
              style="padding:2px 1pt;text-align:center;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December 31,</xhtml:span></xhtml:td><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/></xhtml:tr><xhtml:tr><xhtml:td colspan="6" style="padding:0 1pt"/><xhtml:td
              colspan="3"
              style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2022</xhtml:span></xhtml:td><xhtml:td colspan="3" style="padding:0 1pt"/><xhtml:td
              colspan="3"
              style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</xhtml:span></xhtml:td><xhtml:td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/><xhtml:td
              colspan="3"
              style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</xhtml:span></xhtml:td><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/></xhtml:tr><xhtml:tr><xhtml:td
              colspan="6"
              style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Stock-based compensation expense included in costs and operating expenses:</xhtml:span></xhtml:td><xhtml:td
              colspan="3"
              style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><xhtml:td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><xhtml:td
              colspan="3"
              style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><xhtml:td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><xhtml:td
              colspan="3"
              style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/></xhtml:tr><xhtml:tr><xhtml:td
              colspan="6"
              style="background-color:#ffffff;padding:2px 1pt 2px 13pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cost of revenue (exclusive of depreciation and amortization)</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,640&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><xhtml:td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,024&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><xhtml:td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,506&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/></xhtml:tr><xhtml:tr><xhtml:td
              colspan="6"
              style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sales and marketing</xhtml:span></xhtml:td><xhtml:td
              colspan="2"
              style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,681&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><xhtml:td
              colspan="2"
              style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,329&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><xhtml:td
              colspan="2"
              style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,415&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/></xhtml:tr><xhtml:tr><xhtml:td
              colspan="6"
              style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Research and product development</xhtml:span></xhtml:td><xhtml:td
              colspan="2"
              style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,030&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><xhtml:td
              colspan="2"
              style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,457&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><xhtml:td
              colspan="2"
              style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,818&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/></xhtml:tr><xhtml:tr><xhtml:td
              colspan="6"
              style="background-color:#cceeff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">General and administrative</xhtml:span></xhtml:td><xhtml:td
              colspan="2"
              style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">13,584&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><xhtml:td
              colspan="2"
              style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,531&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><xhtml:td
              colspan="2"
              style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,286&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/></xhtml:tr><xhtml:tr><xhtml:td
              colspan="6"
              style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Total stock-based compensation expense</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">40,935&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><xhtml:td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">15,341&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><xhtml:td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><xhtml:span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">9,025&#160;</xhtml:span></xhtml:td><xhtml:td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/><xhtml:td colspan="3" style="display:none"/></xhtml:tr></xhtml:table></xhtml:div></link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi0xLTEtMS0yMTc5NzQ_7ece5d09-a985-41a9-9d5f-12ca304cbf13"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy0zLTEtMS0yMTc5NzQ_efab966c-3794-44fc-bd5a-d07761a5cd28"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC0zLTEtMS0yMTc5NzQ_4ae1f2c1-077e-4e12-b534-354dfed01ec7"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC0xLTEtMS0yMTc5NzQ_aa049e6c-ff5d-4734-8592-07a6899a7fe3"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy01LTEtMS0yMTc5NzQ_75785655-8b9f-4ea3-ae98-adf0fce751f6"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi0zLTEtMS0yMTc5NzQ_4cd6c302-056a-48e1-b6e4-389016a5979a"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNC01LTEtMS0yMTc5NzQ_44d06417-c606-4a94-9643-14d387e93dc7"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNy0xLTEtMS0yMTc5NzQ_a94b8a85-ef73-4232-8723-b735f1e424d1"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS0zLTEtMS0yMTc5NzQ_4be93e50-37c3-49aa-83ad-2ea2329e5008"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS01LTEtMS0yMTc5NzQ_dceb9316-c228-474a-8f22-502b2efcb48a"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNi01LTEtMS0yMTc5NzQ_2c3bf749-12f5-470c-973f-f4b860308448"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RhYmxlOjg4MjdiNTNmZDU5NDQ5OWU5OWFmOWIxNWYxMDJmNmZlL3RhYmxlcmFuZ2U6ODgyN2I1M2ZkNTk0NDk5ZTk5YWY5YjE1ZjEwMmY2ZmVfNS0xLTEtMS0yMTc5NzQ_f2b7b4ea-c6d1-495c-be6a-767a3be5c924"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOmMxMTExYWFiMjI4OTRkZDk5NDhmNGY2OWQzOGJlMTMyL3NlYzpjMTExMWFhYjIyODk0ZGQ5OTQ4ZjRmNjlkMzhiZTEzMl82NC9mcmFnOjU5ZmRkM2Q5ZTE5YjQzMmU5Zjk1NTU0ZTU4MzY0ZmZjL3RleHRyZWdpb246NTlmZGQzZDllMTliNDMyZTlmOTU1NTRlNTgzNjRmZmNfMTA5OTUxMTYyODA1Ng_7a9f0bf2-016a-4696-87b4-eec73a69dc0b"
          xlink:type="arc"/>
    </link:footnoteLink>
</xbrl>
