<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xml:lang="en-US"
  xmlns="http://www.xbrl.org/2003/instance"
  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:spsc="http://www.spscommerce.com/20230331"
  xmlns:srt="http://fasb.org/srt/2022"
  xmlns:us-gaap="http://fasb.org/us-gaap/2022"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <link:schemaRef xlink:href="spsc-20230331.xsd" xlink:type="simple"/>
    <context id="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i37551c7b2ead4393b6dfecd64cebfbe2_I20230419">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
        </entity>
        <period>
            <instant>2023-04-19</instant>
        </period>
    </context>
    <context id="i3c3314e4b6ab4b059373b9922fd89803_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i074918b0d14149a8b0f12b21ce312a7c_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i0fb6c4ac52bb4e62922d66b045aa21d1_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i95b3738dd893400f85c8cc20eaee2857_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i6c4d0a1e68ca4de9a8b11e4ce719a889_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i711912af9a734238a854043c07d37223_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id39e6985d7b2436da2d47a1c0785aa39_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</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="ia7960d706d64455a9dcc2a1cb1cc072b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</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="i6f9600d5b58b4add81e29b168a498238_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</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="id23181cd6ae24a028a249a4d25818065_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i1fc9801726514305b4f9b2bdf7d77387_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="idd114f039c2f4f8abd444d113432aef1_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="ie7c55ab2807f4502a58026a33c40c206_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i7b9811e5d915467c97be523960c15694_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i75d8049bb9b74cb18a2bc589da52a8fa_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i8124e569001b4e4b82731473fb5747be_I20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-03-31</instant>
        </period>
    </context>
    <context id="ibfcbe17b3dac42f7abe430e868e4f22b_I20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-03-31</instant>
        </period>
    </context>
    <context id="if778689a912e42d6b2037b7a25101d96_I20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-03-31</instant>
        </period>
    </context>
    <context id="iea4c199918fe4c558f469af3807faa16_I20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-03-31</instant>
        </period>
    </context>
    <context id="i55d085d612994f239183415316aadc58_I20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-03-31</instant>
        </period>
    </context>
    <context id="iea65401e964c4d079f6a7764673f9d3e_I20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
        </entity>
        <period>
            <instant>2022-03-31</instant>
        </period>
    </context>
    <context id="i8af1540ceff142b6a0d5b42e48a50184_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i6414f87f71f94519989c31299a6bdc50_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</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="i816385f2c35a409ab40061bbedc4ce46_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</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="i4efe2f28c7954c8a8aba61558e2a21d5_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</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="idd022eaf6b814505b1ba92ba75ab3173_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i1eab60dc7b84487ca4d1c577cde5b045_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="ib25032b5986f435ab3c714e9ca244ca6_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="ia18cb472d37847b4ae4f0e7c9fcc2093_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="ibfb2f662a68c47be9ba841e369ff84b6_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i12ac53a6dd6f4f92b7a17ef4b5ebd28a_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i4911634e78ad4b7eb05c009b2036124f_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i7a0dda8262a5406492187cabbd51d4c6_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i15c6e19508144394b19c34d4451703e8_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i494bbf45b93640b8b137b284e56fea8c_D20220719-20220719">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">spsc:GCommerceIncMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-07-19</startDate>
            <endDate>2022-07-19</endDate>
        </period>
    </context>
    <context id="i0548f3e001a74dfe9ff742bd06bf5d1d_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">spsc:GCommerceIncMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="ibeb5587d4f8d49878baf94f9edca4f5c_D20221004-20221004">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">spsc:InterTradeSystemsIncMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-10-04</startDate>
            <endDate>2022-10-04</endDate>
        </period>
    </context>
    <context id="i5e5f3e01a4554a07ace384858fe9fe50_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">spsc:FulfillmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ContractWithCustomerDurationAxis">spsc:RecurringRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="ic23344cee2e746358b8076d9aa27eb34_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">spsc:FulfillmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ContractWithCustomerDurationAxis">spsc:RecurringRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="ie322d516768a46d3840f582881367ef1_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">spsc:AnalyticsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ContractWithCustomerDurationAxis">spsc:RecurringRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i66eb5ae5d9f648d1be790070d3eb42fb_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">spsc:AnalyticsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ContractWithCustomerDurationAxis">spsc:RecurringRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i430fe804c8354c35acdbac54c1a8103f_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">spsc:OtherMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ContractWithCustomerDurationAxis">spsc:RecurringRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i483819e474e64d97b8cae765a6e4a1fc_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">spsc:OtherMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ContractWithCustomerDurationAxis">spsc:RecurringRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="ic7f5ba10540447178ab71b4bb94aec7a_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ContractWithCustomerDurationAxis">spsc:RecurringRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i466b3e33d52b4738bb24fb4712caadf1_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ContractWithCustomerDurationAxis">spsc:RecurringRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="if42252827934498bbe58d7c7792a6ce5_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ContractWithCustomerDurationAxis">spsc:OneTimeRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i1bd93224c1834afcaecf43afdfecbc56_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ContractWithCustomerDurationAxis">spsc:OneTimeRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i492ea2be0bc2406a877c7ea5f708a619_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i62d7c092a8b141fc9e9a77bf6fd97969_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i33903016b04043ff8f3b903207f93675_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TypeOfArrangementAxis">spsc:SetUpFeesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i0727a052638340d28c42291a37278daf_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TypeOfArrangementAxis">spsc:SetUpFeesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7c34593b80204d5f877eca45dd51d401_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TypeOfArrangementAxis">spsc:SetUpFeesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i88aef2c21a2d44408cff8c9801e859c8_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TypeOfArrangementAxis">spsc:SetUpFeesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i8f43e591125d49a89354fae41f4ec9e1_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TypeOfArrangementAxis">spsc:SetUpFeesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="iee085911fef74ba4bab1072985c39349_I20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TypeOfArrangementAxis">spsc:SetUpFeesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-03-31</instant>
        </period>
    </context>
    <context id="ib95cb9989143445f9a7e651950c32288_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:CashEquivalentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i1b7e5436e1104d35b4b017c4042ef741_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:CashEquivalentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i06db95e3caa74fd69f6bf699dc8553ac_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i9978aeb34edf49fdb2b635d1da947f0f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i3d24870a54cb4537b1c2ea12039f0869_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">spsc:MarketableSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i3938b8743ba341c6b9496d0431a386f7_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">spsc:MarketableSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i27fdedb4de714a9fbe01d6729cbbec8e_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">spsc:MarketableSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i0fbb80009f17498db74b94eaf27cb4fe_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">spsc:MarketableSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i5a75bb88debd45d6977bc1802be484e8_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">spsc:InternallyDevelopedSoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="if36c1fbf7d614e4c996719209cbd2203_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">spsc:InternallyDevelopedSoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i386c273d4ce1474b8fe0376f049c4026_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i044036208ec345ceb8743ee4003b4012_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</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="i7fdb034bc95a4b0392b1bc5c4e517c57_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i3f4882303fd44f25b34a7e397c10779f_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</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="if15e5b2451054b38881f736fe9625cc2_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">spsc:OfficeEquipmentAndFurnitureMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i534eee2a26b2444ebe09cb50ac751aff_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">spsc:OfficeEquipmentAndFurnitureMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="idfbc23a59140439a8615288bcb3f78ef_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="ic91aaccdeb714bfc8f0dce202e196a66_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i42612c0ae9fd49b38cbc84eb2d0083e6_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TechnologyBasedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i4e6aa02ec2b74ba69310d3ad612c9cda_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TechnologyBasedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="iaf6b0a0eb5b3448ebe65047605d7d317_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</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="ic65167d9de1f4e50805056a53d766244_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <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="ibef612a6a2494f51809d078779233bed_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TechnologyBasedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i2139ddbdb599478c96f7dbd3221493e7_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TechnologyBasedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ie8eb7dd105294462b8565005c929635e_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="ic66b2fe6cc7a4bf9b038a88eb9c4f953_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">spsc:A2021StockRepurchaseProgramMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i3cf98a1bfcce425bb63813ffc2c3e964_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">spsc:A2021StockRepurchaseProgramMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i0b6acb14977e4bbebf8dc1ae4945d040_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">spsc:A2022StockRepurchaseProgramMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i93dad56146ff44d98768cfefa65393e7_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="ic6e6e85d532b4870801fe3245685e79a_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="icf5aa811f4814632b2861846f77139b8_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i3a215ac4955d48c8bdf4ef5efe7b2501_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="ia33d3193bbcb46b69d9ea868360410f0_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i48945f26aa664703a3348e4cba198e2d_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i327830e256a546128e87027704b0e090_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="id2486bd8e47b45c383a6d5f3f183cd42_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i8bfedaaee3a94a9090f3613fc3299847_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i7c8e86e8da8b413e95c1e1f7ad578007_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="ie078c18202d541869aac6a5c656ff133_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i81fe3639cdd0409783650946d9f206c1_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="if541830b99f34fada5f80dbf22b9a42b_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="ic919f20ea9e34d7d8a49f792f2850731_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i139966462e7d44a6a65729d6e89d9a2b_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">spsc:RestrictedStockUnitsAndDeferredStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i9efb8a2ef80941b3b94082525317fe20_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">spsc:RestrictedStockUnitsAndDeferredStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i7004f48977d74e228c6e84df8cbc78b7_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">spsc:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="if398ccb0bdb94ada908408abec6ccc79_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">spsc:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="ice4475e67a4a4f4e8c671ae4a60c0e9e_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">spsc:FourZeroOneKStockMatchMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="iace8208134024531b6ba59e56e7e46a1_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">spsc:FourZeroOneKStockMatchMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="ibfc64785d5dc41fb8fbce3eb2022373c_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i8bf3eacc627448edb90205fb30ece2b5_D20200101-20200331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-03-31</endDate>
        </period>
    </context>
    <context id="ia94b7f289d9c466e924f9972711567b8_D20210101-20210331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-03-31</endDate>
        </period>
    </context>
    <context id="i648dacc2484645a191cd2b52aedd0022_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i8eae6a60d667472db9b3b0b29fa91b99_I20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="ifbba1baca1234a62b6d6de074ecb57d4_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i8243d525cc6644e3a8b086461514844d_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i75224f37ba834f5087c46bd2805cd5e7_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">spsc:PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="idc151901553f4a18a424d23b910d4ad3_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i8e28272e86eb4ea5b8c9d7b9f8471840_I20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">us-gaap:EmployeeStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i09c91f829fc14da1b95accd9d3986fac_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:GeographicConcentrationRiskMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:GeographicDistributionAxis">us-gaap:GeographicDistributionDomesticMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="ibdb411029c074e9ea4c1c3c2e805eced_D20220101-20220331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:GeographicConcentrationRiskMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:GeographicDistributionAxis">us-gaap:GeographicDistributionDomesticMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i62f046dcd2034c77b0a5beb5ec3cff59_D20230101-20230331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:GeographicConcentrationRiskMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:GeographicDistributionAxis">us-gaap:GeographicDistributionForeignMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i6f4fecba0c8a4e1786a0301a0c8ea540_D20220101-20221231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001092699</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:GeographicConcentrationRiskMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:GeographicDistributionAxis">us-gaap:GeographicDistributionForeignMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <unit id="shares">
        <measure>shares</measure>
    </unit>
    <unit id="usd">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="usdPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <unit id="number">
        <measure>pure</measure>
    </unit>
    <dei:EntityCentralIndexKey
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80L2ZyYWc6YzU0YWQ1NmJhZTJkNGJiMTg1ODA3NDZjN2E0NDcwY2MvdGFibGU6NmMyYTI2MDk2ZmU0NDFlN2FlOWQzMjA3OGYyNzQ3OTcvdGFibGVyYW5nZTo2YzJhMjYwOTZmZTQ0MWU3YWU5ZDMyMDc4ZjI3NDc5N183LTEtMS0xLTEwMDAzNg_de020644-9348-46e1-8d20-e441c208eadc">0001092699</dei:EntityCentralIndexKey>
    <dei:CurrentFiscalYearEndDate
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80L2ZyYWc6YzU0YWQ1NmJhZTJkNGJiMTg1ODA3NDZjN2E0NDcwY2MvdGFibGU6NmMyYTI2MDk2ZmU0NDFlN2FlOWQzMjA3OGYyNzQ3OTcvdGFibGVyYW5nZTo2YzJhMjYwOTZmZTQ0MWU3YWU5ZDMyMDc4ZjI3NDc5N184LTEtMS0xLTEwMDAzNg_2573ecd9-d40a-44fe-bc38-feba25abae7f">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentFiscalYearFocus
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80L2ZyYWc6YzU0YWQ1NmJhZTJkNGJiMTg1ODA3NDZjN2E0NDcwY2MvdGFibGU6NmMyYTI2MDk2ZmU0NDFlN2FlOWQzMjA3OGYyNzQ3OTcvdGFibGVyYW5nZTo2YzJhMjYwOTZmZTQ0MWU3YWU5ZDMyMDc4ZjI3NDc5N185LTEtMS0xLTEwMDAzNg_12a96c87-0b98-4e18-807a-edfa28b5e1c5">2023</dei:DocumentFiscalYearFocus>
    <dei:DocumentFiscalPeriodFocus
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80L2ZyYWc6YzU0YWQ1NmJhZTJkNGJiMTg1ODA3NDZjN2E0NDcwY2MvdGFibGU6NmMyYTI2MDk2ZmU0NDFlN2FlOWQzMjA3OGYyNzQ3OTcvdGFibGVyYW5nZTo2YzJhMjYwOTZmZTQ0MWU3YWU5ZDMyMDc4ZjI3NDc5N18xMC0xLTEtMS0xMDAwMzY_17d8f5ee-d09e-4fea-9c2d-d2adb544a6cb">Q1</dei:DocumentFiscalPeriodFocus>
    <dei:AmendmentFlag
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80L2ZyYWc6YzU0YWQ1NmJhZTJkNGJiMTg1ODA3NDZjN2E0NDcwY2MvdGFibGU6NmMyYTI2MDk2ZmU0NDFlN2FlOWQzMjA3OGYyNzQ3OTcvdGFibGVyYW5nZTo2YzJhMjYwOTZmZTQ0MWU3YWU5ZDMyMDc4ZjI3NDc5N18xMS0xLTEtMS0xMDAwMzY_4a2ad337-b025-4485-911b-5e5ea29eca51">false</dei:AmendmentFlag>
    <dei:DocumentType
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8yMDI5_382712f4-8db7-4468-9c66-170624c90af0">10-Q</dei:DocumentType>
    <dei:DocumentQuarterlyReport
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGFibGU6NjRiNWQyMDU4NDhmNDYxNzgwYzA0YjhhM2U2MDcwNzEvdGFibGVyYW5nZTo2NGI1ZDIwNTg0OGY0NjE3ODBjMDRiOGEzZTYwNzA3MV8wLTAtMS0xLTEwMDAzNg_6120b7fc-693d-41b5-9a91-53e594979381">true</dei:DocumentQuarterlyReport>
    <dei:DocumentPeriodEndDate
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8xMzI_434f8740-696b-448e-b40a-885674e4d243">2023-03-31</dei:DocumentPeriodEndDate>
    <dei:DocumentTransitionReport
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGFibGU6MDZlMjk5ZDQzZGMwNDgwOWE0ODc0M2YxOTY5YzlkMWEvdGFibGVyYW5nZTowNmUyOTlkNDNkYzA0ODA5YTQ4NzQzZjE5NjljOWQxYV8wLTAtMS0xLTEwMDAzNg_d0d1fc58-ae36-4670-99a5-c46705919261">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8yMDMw_90218b81-4ff1-4dca-a2a9-0b7ec149bed2">001-34702</dei:EntityFileNumber>
    <dei:EntityRegistrantName
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8yMDMx_32d73002-509a-4bca-8837-bcb471311af6">SPS COMMERCE, INC.</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGFibGU6Y2Y4NjZiYmY0MzYwNGQzMGIzYzdiODUxODk4YjA5YzgvdGFibGVyYW5nZTpjZjg2NmJiZjQzNjA0ZDMwYjNjN2I4NTE4OThiMDljOF8wLTAtMS0xLTEwMDAzNg_024cafb6-fe27-4935-8a02-b74e6f70da36">DE</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGFibGU6Y2Y4NjZiYmY0MzYwNGQzMGIzYzdiODUxODk4YjA5YzgvdGFibGVyYW5nZTpjZjg2NmJiZjQzNjA0ZDMwYjNjN2I4NTE4OThiMDljOF8wLTEtMS0xLTEwMDAzNg_a621bfc1-0e06-4fb7-be61-0265eeeaedbf">41-2015127</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8zMDA_734ba8a6-df78-4270-8983-60441cfde90e">333 South Seventh Street</dei:EntityAddressAddressLine1>
    <dei:EntityAddressAddressLine2
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8zMDQ_702b21d0-ec53-4be7-addf-32dc73f4ab7b">Suite 1000</dei:EntityAddressAddressLine2>
    <dei:EntityAddressCityOrTown
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8zMDg_ed66c3eb-ad1f-41b7-abb0-97daa4379129">Minneapolis</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8zMTI_4f549818-c450-4fcd-90ff-02e3dcd79802">MN</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8zMTU_c89ad1b3-5021-4a42-87fc-3541ecc3c17d">55402</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8yMDMz_79242a03-1a94-4c1e-a1dd-8dceaadce7b3">612</dei:CityAreaCode>
    <dei:LocalPhoneNumber
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8yMDM4_57abcde3-6a4e-4e6c-9bd8-01ca1b7d708b">435-9400</dei:LocalPhoneNumber>
    <dei:Security12bTitle
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGFibGU6OGZkNzg0N2U4MjMxNDM0Y2E3YmViZGNkNGI1MGM1ZTIvdGFibGVyYW5nZTo4ZmQ3ODQ3ZTgyMzE0MzRjYTdiZWJkY2Q0YjUwYzVlMl8xLTAtMS0xLTEwMDAzNg_e6e8f960-c93c-47ae-8834-b7cc2da1ed63">Common Stock, par value $0.001 per share</dei:Security12bTitle>
    <dei:TradingSymbol
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGFibGU6OGZkNzg0N2U4MjMxNDM0Y2E3YmViZGNkNGI1MGM1ZTIvdGFibGVyYW5nZTo4ZmQ3ODQ3ZTgyMzE0MzRjYTdiZWJkY2Q0YjUwYzVlMl8xLTItMS0xLTEwMDAzNg_f2c760b1-b0e3-43d6-87e0-7deeb2bc6fcf">SPSC</dei:TradingSymbol>
    <dei:SecurityExchangeName
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGFibGU6OGZkNzg0N2U4MjMxNDM0Y2E3YmViZGNkNGI1MGM1ZTIvdGFibGVyYW5nZTo4ZmQ3ODQ3ZTgyMzE0MzRjYTdiZWJkY2Q0YjUwYzVlMl8xLTQtMS0xLTEwMDAzNi90ZXh0cmVnaW9uOjE0MGQ5OTI1MjFhOTQwODI4NTA3ZmI2NmU3NGI3MmZiXzMz_66c2d526-f8cc-4528-9f2c-1d5abaf9969d">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityCurrentReportingStatus
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8yMDI2_625cb61f-c046-434e-9108-c520ef3493d9">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8yMDQ1_70c35d76-5e9b-4a70-a4fc-b50f1c9305d9">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGFibGU6OTI4YTI5NmQ0YTJjNGM4ZWJiZjdlNzQ5NjNhOTQ5MzgvdGFibGVyYW5nZTo5MjhhMjk2ZDRhMmM0YzhlYmJmN2U3NDk2M2E5NDkzOF8wLTAtMS0xLTEwMDAzNg_96167cd5-a37b-40a4-ab99-54cce024aeeb">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGFibGU6OTI4YTI5NmQ0YTJjNGM4ZWJiZjdlNzQ5NjNhOTQ5MzgvdGFibGVyYW5nZTo5MjhhMjk2ZDRhMmM0YzhlYmJmN2U3NDk2M2E5NDkzOF8yLTMtMS0xLTEwMDAzNg_1029f2fd-af2d-4830-8076-598ee29e3e68">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGFibGU6OTI4YTI5NmQ0YTJjNGM4ZWJiZjdlNzQ5NjNhOTQ5MzgvdGFibGVyYW5nZTo5MjhhMjk2ZDRhMmM0YzhlYmJmN2U3NDk2M2E5NDkzOF80LTMtMS0xLTEwMDAzNg_6a501a26-7c17-4eed-91ea-49acd2ea3860">false</dei:EntityEmergingGrowthCompany>
    <dei:EntityShellCompany
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8yMDQ2_5a79d85a-f315-4c36-82b4-6634fca164cb">false</dei:EntityShellCompany>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i37551c7b2ead4393b6dfecd64cebfbe2_I20230419"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xL2ZyYWc6YWMyY2ZkNDMyYmNmNGNhYzljYWEzNjUxOTUzYjk5OTkvdGV4dHJlZ2lvbjphYzJjZmQ0MzJiY2Y0Y2FjOWNhYTM2NTE5NTNiOTk5OV8yMDE3_5edf20f9-a9cf-4c95-acf4-71f483a41a94"
      unitRef="shares">36532756</dei:EntityCommonStockSharesOutstanding>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMy0xLTEtMS0xMDAwMzY_ef015f0c-30ba-4ca5-a20d-9d8d1b629083"
      unitRef="usd">182304000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMy0zLTEtMS0xMDAwMzY_b59211d8-ddbe-41ef-b022-5c9e35181920"
      unitRef="usd">162893000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:ShortTermInvestments
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNC0xLTEtMS0xMDAwMzY_632e14c2-1ec8-4fc9-bd99-7e962b534220"
      unitRef="usd">51146000</us-gaap:ShortTermInvestments>
    <us-gaap:ShortTermInvestments
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNC0zLTEtMS0xMDAwMzY_fb4ca49b-c8d2-485c-aba2-a87da782e82f"
      unitRef="usd">51412000</us-gaap:ShortTermInvestments>
    <us-gaap:AccountsReceivableGrossCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNS0xLTEtMS0xMDAwMzY_2423941d-56a8-4927-92c2-fb79272512b2"
      unitRef="usd">46654000</us-gaap:AccountsReceivableGrossCurrent>
    <us-gaap:AccountsReceivableGrossCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNS0zLTEtMS0xMDAwMzY_cce5f12c-6ba4-44f0-b935-a780be65765d"
      unitRef="usd">42501000</us-gaap:AccountsReceivableGrossCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNi0xLTEtMS0xMDAwMzY_daf772d1-f904-4a89-971a-b7693306adac"
      unitRef="usd">3217000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNi0zLTEtMS0xMDAwMzY_ae33570b-101b-4265-8879-5d8a49772cfd"
      unitRef="usd">3066000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNy0xLTEtMS0xMDAwMzY_ebf84fae-ba01-445e-ae9d-7a5d9f296c10"
      unitRef="usd">43437000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNy0zLTEtMS0xMDAwMzY_c0bae18e-a863-46a3-94c0-486ed034b722"
      unitRef="usd">39435000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:DeferredCostsCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfOC0xLTEtMS0xMDAwMzY_ce6ecc96-38cf-43ad-a6dc-195fc5725f6b"
      unitRef="usd">53844000</us-gaap:DeferredCostsCurrent>
    <us-gaap:DeferredCostsCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfOC0zLTEtMS0xMDAwMzY_3b8c94c5-ae17-4799-851e-0b8ed36f4a73"
      unitRef="usd">52755000</us-gaap:DeferredCostsCurrent>
    <us-gaap:OtherAssetsCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfOS0xLTEtMS0xMDAwMzY_b2a905b8-3d3a-4b5e-8955-bd37cef21839"
      unitRef="usd">15651000</us-gaap:OtherAssetsCurrent>
    <us-gaap:OtherAssetsCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfOS0zLTEtMS0xMDAwMzY_29c5d37b-27aa-4461-a923-4f97d6374273"
      unitRef="usd">16319000</us-gaap:OtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTAtMS0xLTEtMTAwMDM2_18c08b6f-f633-4ca4-b8d2-9dad3f6310e1"
      unitRef="usd">346382000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTAtMy0xLTEtMTAwMDM2_5b8e4212-93c5-45ad-aef0-fb88b3f115f3"
      unitRef="usd">322814000</us-gaap:AssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTEtMS0xLTEtMTAwMDM2_6de16038-1992-45d8-9dd4-7393c8d72aeb"
      unitRef="usd">35078000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTEtMy0xLTEtMTAwMDM2_c0ab1cba-c5a4-46f6-bf0f-09e178201a19"
      unitRef="usd">35458000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTItMS0xLTEtMTAwMDM2_467d9a25-b19b-4f86-917f-0f3ed1f74957"
      unitRef="usd">8451000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTItMy0xLTEtMTAwMDM2_de09dc61-5413-4de9-8221-fdcd6b77188a"
      unitRef="usd">9170000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:Goodwill
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTMtMS0xLTEtMTAwMDM2_c4d3fe72-c2a2-4211-a940-0b546272e6f2"
      unitRef="usd">199001000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTMtMy0xLTEtMTAwMDM2_e8537fc2-14d3-4ba8-a1be-11e0fcc2717e"
      unitRef="usd">197284000</us-gaap:Goodwill>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTQtMS0xLTEtMTAwMDM2_d80c5f47-4451-45c6-9f0b-9da5e69e9dc5"
      unitRef="usd">84536000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTQtMy0xLTEtMTAwMDM2_f67b16fb-917b-4039-ad19-110e540ecd2f"
      unitRef="usd">88352000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:DeferredCosts
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTYtMS0xLTEtMTAwMDM2_e8918210-a1ca-4b05-b5a0-4db0043eaa92"
      unitRef="usd">17965000</us-gaap:DeferredCosts>
    <us-gaap:DeferredCosts
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTYtMy0xLTEtMTAwMDM2_1d106c91-676c-4bad-b8c1-805086897382"
      unitRef="usd">17424000</us-gaap:DeferredCosts>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTctMS0xLTEtMTAwMDM2_6f7e1f6f-644d-4b88-aeef-8383a7364dde"
      unitRef="usd">3365000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTctMy0xLTEtMTAwMDM2_d3a54e63-eb80-4f06-9593-9caac51bf637"
      unitRef="usd">227000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTgtMS0xLTEtMTAwMDM2_63e11651-9ef1-4045-a3cb-4e1596daf07c"
      unitRef="usd">2149000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTgtMy0xLTEtMTAwMDM2_a478afa8-92b3-4621-89d6-73f8927469a9"
      unitRef="usd">2185000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTktMS0xLTEtMTAwMDM2_5b37d556-e4c5-47df-9d22-cebbc426093f"
      unitRef="usd">696927000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMTktMy0xLTEtMTAwMDM2_f15502d6-56a1-4ef7-8558-2d65ecc9050a"
      unitRef="usd">672914000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjItMS0xLTEtMTAwMDM2_1a1c6518-08eb-45bf-b680-af47953e0f39"
      unitRef="usd">5339000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjItMy0xLTEtMTAwMDM2_38175d67-c547-4ca1-ba29-abf47b14437b"
      unitRef="usd">11256000</us-gaap:AccountsPayableCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjMtMS0xLTEtMTAwMDM2_67ef688e-51bb-41a2-81d9-28ac73336400"
      unitRef="usd">26431000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjMtMy0xLTEtMTAwMDM2_cb857773-6740-43bb-95e4-d4557c10a45c"
      unitRef="usd">30235000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjQtMS0xLTEtMTAwMDM2_76f9a0b3-2526-4ffb-bc5f-ca2f6b7c8251"
      unitRef="usd">8163000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjQtMy0xLTEtMTAwMDM2_367214bf-4bdd-419e-b995-da77d52068b6"
      unitRef="usd">7451000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjUtMS0xLTEtMTAwMDM2_04baad38-9842-475d-bab4-2addd4425893"
      unitRef="usd">62907000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjUtMy0xLTEtMTAwMDM2_8fabd8ff-bdc0-43db-a255-53cffd96bdb0"
      unitRef="usd">57423000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjYtMS0xLTEtMTAwMDM2_df14d4ba-b262-4fb5-b7f8-01595b7146b9"
      unitRef="usd">4121000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjYtMy0xLTEtMTAwMDM2_6eb353ef-2283-46c9-b7ae-b8a4ff7a87bd"
      unitRef="usd">4277000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjctMS0xLTEtMTAwMDM2_6df311f6-9f7c-4604-a9ae-0ef5c0cc3dbe"
      unitRef="usd">106961000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjctMy0xLTEtMTAwMDM2_19fea991-821d-4042-8f4b-b57a82ac5f6c"
      unitRef="usd">110642000</us-gaap:LiabilitiesCurrent>
    <us-gaap:ContractWithCustomerLiabilityNoncurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjktMS0xLTEtMTAwMDM2_4f5ee5cf-aeb4-45f0-bddd-d46c9282835f"
      unitRef="usd">5105000</us-gaap:ContractWithCustomerLiabilityNoncurrent>
    <us-gaap:ContractWithCustomerLiabilityNoncurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMjktMy0xLTEtMTAwMDM2_6589f287-cb68-4197-9b4d-2d980e809893"
      unitRef="usd">4771000</us-gaap:ContractWithCustomerLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzAtMS0xLTEtMTAwMDM2_1b418907-8ce9-4ad1-89c4-cb700e96b630"
      unitRef="usd">11994000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzAtMy0xLTEtMTAwMDM2_676bb1a9-f965-4724-82b9-ce86c47409ef"
      unitRef="usd">13009000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzEtMS0xLTEtMTAwMDM2_b24d28c3-8d12-4c4f-ae31-1274aa584674"
      unitRef="usd">6977000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzEtMy0xLTEtMTAwMDM2_252519a3-2d51-4f2d-9eed-c06653cc429a"
      unitRef="usd">7419000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:Liabilities
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzItMS0xLTEtMTAwMDM2_eb9ea4b1-7b20-4816-b0fa-0b563e6723b3"
      unitRef="usd">131037000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzItMy0xLTEtMTAwMDM2_f1df73e9-577c-42ac-903f-40144cee6288"
      unitRef="usd">135841000</us-gaap:Liabilities>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzMtMS0xLTEtMTAwMDM2_370596b9-8cda-4591-903b-2af8bcc01fcf"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzMtMy0xLTEtMTAwMDM2_34d9dfcd-fe0a-476d-b57d-d8cd69738e72"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzUtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246OWRlYjA2ZDIyZDE0NDEwNTk1OGVlZDAyZjVkODYxMThfMjE_33231be9-c09c-4f23-b5a7-0fa955c4e8ce"
      unitRef="usdPerShare">0.001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzUtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246OWRlYjA2ZDIyZDE0NDEwNTk1OGVlZDAyZjVkODYxMThfMjE_c2eff8a1-4631-447b-8bd3-cc3072028119"
      unitRef="usdPerShare">0.001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzUtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246OWRlYjA2ZDIyZDE0NDEwNTk1OGVlZDAyZjVkODYxMThfMzU_1db8a2ed-be2a-439d-ae71-29a5f8868cc0"
      unitRef="shares">5000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzUtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246OWRlYjA2ZDIyZDE0NDEwNTk1OGVlZDAyZjVkODYxMThfMzU_332674f8-d9de-4ccb-a1c5-c379ec728dda"
      unitRef="shares">5000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzUtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246OWRlYjA2ZDIyZDE0NDEwNTk1OGVlZDAyZjVkODYxMThfNTc_0a102899-20bf-443f-b1d0-fa8328ba15e6"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzUtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246OWRlYjA2ZDIyZDE0NDEwNTk1OGVlZDAyZjVkODYxMThfNTc_d056115b-eeb2-41a0-9765-17d48c1e05c4"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzUtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246OWRlYjA2ZDIyZDE0NDEwNTk1OGVlZDAyZjVkODYxMThfNTc_f9a50258-e6dd-4d98-83c6-fedcb864fe1a"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzUtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246OWRlYjA2ZDIyZDE0NDEwNTk1OGVlZDAyZjVkODYxMThfNTc_fc7fcd62-649b-491e-9b08-36ce502f8826"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockValue
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzUtMS0xLTEtMTAwMDM2_ff551cf0-0e34-4b3c-bdf0-6d900e25dc3e"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:PreferredStockValue
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzUtMy0xLTEtMTAwMDM2_6f219390-e789-4d25-a564-d49a38a73176"
      unitRef="usd">0</us-gaap:PreferredStockValue>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246MDQzN2JiYmQ0YzU1NDBkZDkzNTg1N2ViNTQxYmM3MjVfMTg_0aee8db9-5777-4a91-be86-5472fdfb436e"
      unitRef="usdPerShare">0.001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246MDQzN2JiYmQ0YzU1NDBkZDkzNTg1N2ViNTQxYmM3MjVfMTg_c1a8da2a-4baa-4fc9-bcf3-d815bfc1f000"
      unitRef="usdPerShare">0.001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246MDQzN2JiYmQ0YzU1NDBkZDkzNTg1N2ViNTQxYmM3MjVfMzI_86ac56a0-3825-4b80-b1a0-0dfdb3e37491"
      unitRef="shares">110000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246MDQzN2JiYmQ0YzU1NDBkZDkzNTg1N2ViNTQxYmM3MjVfMzI_8a47c26a-b343-4f62-9e06-5e39d4ded78e"
      unitRef="shares">110000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246MDQzN2JiYmQ0YzU1NDBkZDkzNTg1N2ViNTQxYmM3MjVfNTQ_27f673cb-6f20-4810-b2e5-9d26f5e23bd5"
      unitRef="shares">38683854</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesIssued
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246MDQzN2JiYmQ0YzU1NDBkZDkzNTg1N2ViNTQxYmM3MjVfNjE_aa3fe2f0-2629-4562-9f8a-1d25e5db62b7"
      unitRef="shares">38309144</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246MDQzN2JiYmQ0YzU1NDBkZDkzNTg1N2ViNTQxYmM3MjVfODM_e947462b-5839-4116-8f4d-c60b3392e739"
      unitRef="shares">36532756</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246MDQzN2JiYmQ0YzU1NDBkZDkzNTg1N2ViNTQxYmM3MjVfNDk0NzgwMjMyNTEzOA_28042723-fd59-40dc-a97e-7fe4be89d2ee"
      unitRef="shares">36158046</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i0fb6c4ac52bb4e62922d66b045aa21d1_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246MDQzN2JiYmQ0YzU1NDBkZDkzNTg1N2ViNTQxYmM3MjVfNDk0NzgwMjMyNTEzOA_dea9fb7c-df27-4ccd-b718-b9d2848a4cac"
      unitRef="shares">36158046</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockValue
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMS0xLTEtMTAwMDM2_aa3d7373-e8fe-4542-8b2d-e9c7a1f8ca44"
      unitRef="usd">39000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzYtMy0xLTEtMTAwMDM2_975b3155-2f4f-4e7b-941a-a2cbebaaf884"
      unitRef="usd">38000</us-gaap:CommonStockValue>
    <us-gaap:TreasuryStockCommonShares
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzctMC0xLTEtMTAwMDM2L3RleHRyZWdpb246YmNmMGQzOTYyZjFhNDhhNGJjOWFmNTMzOWExMDkzNDNfMjk_022b55b2-7152-4ee4-9399-6bfa1bdaa8b9"
      unitRef="shares">2151098</us-gaap:TreasuryStockCommonShares>
    <us-gaap:TreasuryStockCommonShares
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzctMC0xLTEtMTAwMDM2L3RleHRyZWdpb246YmNmMGQzOTYyZjFhNDhhNGJjOWFmNTMzOWExMDkzNDNfMjk_7627e715-678f-4ebd-bdca-94c3af30e8f7"
      unitRef="shares">2151098</us-gaap:TreasuryStockCommonShares>
    <us-gaap:TreasuryStockCommonValue
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzctMS0xLTEtMTAwMDM2_fac5e11e-083b-4a74-8e3a-22a4169154b6"
      unitRef="usd">128892000</us-gaap:TreasuryStockCommonValue>
    <us-gaap:TreasuryStockCommonValue
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzctMy0xLTEtMTAwMDM2_b7c655e2-3227-4190-9b10-23b3fce5cd4b"
      unitRef="usd">128892000</us-gaap:TreasuryStockCommonValue>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzgtMS0xLTEtMTAwMDM2_d22d4fb9-7dea-4ca5-9143-9529339be67b"
      unitRef="usd">489716000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzgtMy0xLTEtMTAwMDM2_68699fcc-705d-49cf-83d7-be98ef589c91"
      unitRef="usd">476117000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzktMS0xLTEtMTAwMDM2_fe59099e-4116-47eb-94dd-111f24fc02eb"
      unitRef="usd">208510000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfMzktMy0xLTEtMTAwMDM2_3ccf9a91-be40-4a68-a846-391cff4d8b00"
      unitRef="usd">193221000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNDAtMS0xLTEtMTAwMDM2_9797d73f-66d7-4f76-a276-ad8224258c29"
      unitRef="usd">-3483000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNDAtMy0xLTEtMTAwMDM2_17d45d79-3b0a-4c8a-a982-6fc94d866c55"
      unitRef="usd">-3411000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNDEtMS0xLTEtMTAwMDM2_bb360056-660a-438b-a195-a9be4c14c43c"
      unitRef="usd">565890000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNDEtMy0xLTEtMTAwMDM2_d1f5a038-25ea-48c1-b186-dde188219ddf"
      unitRef="usd">537073000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNDItMS0xLTEtMTAwMDM2_33aa1061-3ffe-4dbe-9c44-990e96cab30e"
      unitRef="usd">696927000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xNi9mcmFnOmFjMDRlY2ZjOWRhZjQwZDA4NDg2MmQ5ZGY4OGZhN2ZiL3RhYmxlOmE2M2ZlYmZkYjQ4ZTRjODNiZDc4NTRhYWYxMmYwNWI1L3RhYmxlcmFuZ2U6YTYzZmViZmRiNDhlNGM4M2JkNzg1NGFhZjEyZjA1YjVfNDItMy0xLTEtMTAwMDM2_8154736f-e34b-4b7c-a85f-e992b9df6517"
      unitRef="usd">672914000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMi0xLTEtMS0xMDAwMzY_d15a6dbb-d433-40fc-9938-fbb402690b30"
      unitRef="usd">125868000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMi0zLTEtMS0xMDAwMzY_ef94d7c3-f049-4b7a-a839-7d76c919c643"
      unitRef="usd">105193000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CostOfRevenue
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMy0xLTEtMS0xMDAwMzY_d6a23aa0-392c-47c0-8a84-10c3cd3ec0fe"
      unitRef="usd">42964000</us-gaap:CostOfRevenue>
    <us-gaap:CostOfRevenue
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMy0zLTEtMS0xMDAwMzY_02c7aa39-15f2-433d-8951-8a2f181e8582"
      unitRef="usd">35389000</us-gaap:CostOfRevenue>
    <us-gaap:GrossProfit
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfNC0xLTEtMS0xMDAwMzY_346515c0-5812-4da6-99b7-e5927c5f55c9"
      unitRef="usd">82904000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfNC0zLTEtMS0xMDAwMzY_deb1f50d-f976-4cdb-b69d-a5f8632ef6b7"
      unitRef="usd">69804000</us-gaap:GrossProfit>
    <us-gaap:SellingAndMarketingExpense
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfNi0xLTEtMS0xMDAwMzY_9dbde171-951e-436a-a30b-2cd285d54b5a"
      unitRef="usd">29083000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfNi0zLTEtMS0xMDAwMzY_8194e91d-178c-4873-b556-8612138937a6"
      unitRef="usd">24655000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfNy0xLTEtMS0xMDAwMzY_1c386dc8-ab52-4105-b159-5af7ba042c0c"
      unitRef="usd">12563000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfNy0zLTEtMS0xMDAwMzY_601a90c7-fb28-4e43-8969-d0cdf39970c5"
      unitRef="usd">10701000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfOC0xLTEtMS0xMDAwMzY_b7e5f79d-2263-49e2-a372-cf45ed478360"
      unitRef="usd">20677000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfOC0zLTEtMS0xMDAwMzY_05ab181f-5bed-41a0-a69f-f24f6f53ff8c"
      unitRef="usd">15468000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfOS0xLTEtMS0xMDAwMzY_89399400-99d2-46f7-b5dd-0b2beb2adaaf"
      unitRef="usd">3851000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfOS0zLTEtMS0xMDAwMzY_1e985be4-5ecf-47d4-96ff-8bdc9fc8f1dd"
      unitRef="usd">2470000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:OperatingExpenses
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTAtMS0xLTEtMTAwMDM2_71ba1d37-8a47-4443-bc9f-5de2938987d5"
      unitRef="usd">66174000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTAtMy0xLTEtMTAwMDM2_314aa4b2-51d6-46dd-a4ca-a1eeab7c905d"
      unitRef="usd">53294000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTEtMS0xLTEtMTAwMDM2_843cc7d4-9fcb-436e-9778-a7be43da5329"
      unitRef="usd">16730000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTEtMy0xLTEtMTAwMDM2_4f84be58-8c0b-40fc-ad24-5b4bdd217255"
      unitRef="usd">16510000</us-gaap:OperatingIncomeLoss>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTItMS0xLTEtMTAwMDM2_0e0cf0bc-d21a-428b-84d1-d3ac3cb7ba8d"
      unitRef="usd">1276000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTItMy0xLTEtMTAwMDM2_a31c6b17-7830-409d-9487-f08410795ce7"
      unitRef="usd">423000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTMtMS0xLTEtMTAwMDM2_a6f80b6c-ba0c-453e-a3ef-f7c5455f1b7b"
      unitRef="usd">18006000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTMtMy0xLTEtMTAwMDM2_1a37247e-c2f4-4c27-be70-d670c49bfc22"
      unitRef="usd">16933000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTQtMS0xLTEtMTAwMDM2_782003cf-580b-413b-a5f5-76827962c361"
      unitRef="usd">2717000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTQtMy0xLTEtMTAwMDM2_64bd424f-95b9-4523-9feb-4888818a2628"
      unitRef="usd">4330000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTUtMS0xLTEtMTAwMDM2_e097781f-9a33-462c-af43-8492e52070b0"
      unitRef="usd">15289000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTUtMy0xLTEtMTAwMDM2_0d496217-35f7-48e4-a178-8b2addd5c76a"
      unitRef="usd">12603000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
      contextRef="i95b3738dd893400f85c8cc20eaee2857_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTctMS0xLTEtMTAwMDM2_77dbfcac-f808-492f-896e-0e8c2bffda67"
      unitRef="usd">-95000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTctMy0xLTEtMTAwMDM2_47802594-7968-47a6-a853-beb8f66e2998"
      unitRef="usd">730000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTgtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246M2Q1ODAyYTJiNzM1NDQ0YmI1MjhlMzg5Y2YxZWIwY2JfNTc_f4f5fce5-9819-4819-b9c4-eb2e0d67fdf0"
      unitRef="usd">133000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTgtMC0xLTEtMTAwMDM2L3RleHRyZWdpb246M2Q1ODAyYTJiNzM1NDQ0YmI1MjhlMzg5Y2YxZWIwY2JfNjE_5869c64b-e170-4def-b606-132395dcea82"
      unitRef="usd">-1000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i95b3738dd893400f85c8cc20eaee2857_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTgtMS0xLTEtMTAwMDM2_978b7d93-7748-4bc8-8a69-5fb26caf65f4"
      unitRef="usd">399000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTgtMy0xLTEtMTAwMDM2_37e698ca-bc39-4ac5-b397-f993f4e21b91"
      unitRef="usd">-3000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTktMC0xLTEtMTAwMDM2L3RleHRyZWdpb246YTk2NTQ1YmFiOGMzNGM5ZmI1NzA2MzIzZmJjZWNlMTdfODA_a8ceb232-50a3-4bb0-931d-a3323d87c0d5"
      unitRef="usd">125000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTktMC0xLTEtMTAwMDM2L3RleHRyZWdpb246YTk2NTQ1YmFiOGMzNGM5ZmI1NzA2MzIzZmJjZWNlMTdfODQ_7e257d48-dc3b-47f5-a7dc-36c02f8c8ea0"
      unitRef="usd">-4000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i95b3738dd893400f85c8cc20eaee2857_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTktMS0xLTEtMTAwMDM2_c011e146-4cfc-4b4b-9b2e-638c375c7652"
      unitRef="usd">376000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMTktMy0xLTEtMTAwMDM2_01f75933-78a8-47ad-97e7-40088ddb427d"
      unitRef="usd">-11000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjAtMS0xLTEtMTAwMDM2_4fb5fa7f-54e6-4b7c-94a1-e173ac023c68"
      unitRef="usd">-72000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjAtMy0xLTEtMTAwMDM2_c8541d8e-e783-408f-869b-37cc41b248b8"
      unitRef="usd">738000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjEtMS0xLTEtMTAwMDM2_536500f1-7a87-4a46-aa8b-877fb3542975"
      unitRef="usd">15217000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjEtMy0xLTEtMTAwMDM2_d79e4098-7b47-47a7-a849-ca863c63332b"
      unitRef="usd">13341000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:EarningsPerShareBasic
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjQtMS0xLTEtMTAwMDM2_73c4c13d-ab2d-477d-b371-b60678ae2aa2"
      unitRef="usdPerShare">0.42</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjQtMy0xLTEtMTAwMDM2_895bd389-593b-444f-a448-256204da3856"
      unitRef="usdPerShare">0.35</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjUtMS0xLTEtMTAwMDM2_4f7ca6bc-340e-4e3c-b26e-57550a562872"
      unitRef="usdPerShare">0.41</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjUtMy0xLTEtMTAwMDM2_e8e121f6-5207-409e-be87-cc8512ef26dc"
      unitRef="usdPerShare">0.34</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjgtMS0xLTEtMTAwMDM2_4a25c50d-ffb0-46d4-a736-81b2324d36d0"
      unitRef="shares">36427000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjgtMS0xLTEtMTAwMDM2_c84e6d40-cbac-4c7b-a790-1c8c1c25b87d"
      unitRef="shares">36427000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjgtMy0xLTEtMTAwMDM2_a42a3d2f-b6bf-40fb-95bd-cdf54bf0b1d4"
      unitRef="shares">36136000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjktMS0xLTEtMTAwMDM2_c9cacfb3-142b-417d-9c4d-2f606cff22e5"
      unitRef="shares">37155000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjktMS0xLTEtMTAwMDM2_fa9d9ba7-2aca-4232-8d9b-84c0a1c1b37a"
      unitRef="shares">37155000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8xOS9mcmFnOjM5YzE0OGJmNmI2MTQzZTI5YmZkNGM5YWVhNWMyMzI4L3RhYmxlOjg5NGM2NGQ3NDRiZjRkZWZhMjIxMWZjNzZiY2M3ZWU1L3RhYmxlcmFuZ2U6ODk0YzY0ZDc0NGJmNGRlZmEyMjExZmM3NmJjYzdlZTVfMjktMy0xLTEtMTAwMDM2_95d3c5bd-3ab5-49f3-9099-9c39ed85c867"
      unitRef="shares">36989000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i6c4d0a1e68ca4de9a8b11e4ce719a889_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMi0xLTEtMS0xMDAwMzY_efe62904-f84a-4189-a00c-17276db99d8e"
      unitRef="shares">36009257</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i6c4d0a1e68ca4de9a8b11e4ce719a889_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMi0zLTEtMS0xMDAwMzY_778c2226-8921-449c-bf31-e61c587db140"
      unitRef="usd">38000</us-gaap:StockholdersEquity>
    <us-gaap:TreasuryStockCommonShares
      contextRef="i711912af9a734238a854043c07d37223_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMi01LTEtMS0xMDAwMzY_5bb74ead-dacb-4e1c-83c4-76b0a8db6de9"
      unitRef="shares">1789353</us-gaap:TreasuryStockCommonShares>
    <us-gaap:StockholdersEquity
      contextRef="i711912af9a734238a854043c07d37223_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMi03LTEtMS0xMDAwMzY_50834772-fa1f-460d-abb6-70e3fc6fe5dc"
      unitRef="usd">-85677000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="id39e6985d7b2436da2d47a1c0785aa39_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMi05LTEtMS0xMDAwMzY_b0eb82e0-9707-4a20-8787-66eb8a911ded"
      unitRef="usd">433258000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ia7960d706d64455a9dcc2a1cb1cc072b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMi0xMS0xLTEtMTAwMDM2_a5a24773-93ca-41a2-8966-04dab170f89f"
      unitRef="usd">138087000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i6f9600d5b58b4add81e29b168a498238_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMi0xMy0xLTEtMTAwMDM2_23e1dfbd-c2d0-4ddc-a12e-f3a3c21148ff"
      unitRef="usd">-1447000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="id23181cd6ae24a028a249a4d25818065_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMi0xNS0xLTEtMTAwMDM2_1181772b-d793-459c-8826-a3c17b3c5cb3"
      unitRef="usd">484259000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i1fc9801726514305b4f9b2bdf7d77387_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMy05LTEtMS0xMDAwMzY_c62a5dfb-775f-4104-a0b1-d3744e8e11e3"
      unitRef="usd">8496000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMy0xNS0xLTEtMTAwMDM2_b66faef8-ebb7-4b9a-9817-567499a302c4"
      unitRef="usd">8496000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="idd114f039c2f4f8abd444d113432aef1_D20220101-20220331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNC0xLTEtMS0xMDAwMzY_d2c6b2aa-8697-4718-b541-95e3b3f9cf44"
      unitRef="shares">231107</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i1fc9801726514305b4f9b2bdf7d77387_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNC05LTEtMS0xMDAwMzY_83b85764-beeb-4f3d-a78c-f5a82959aa34"
      unitRef="usd">504000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNC0xNS0xLTEtMTAwMDM2_f54ebe67-c831-4d3b-8bcc-23c7fac46d7c"
      unitRef="usd">504000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans
      contextRef="idd114f039c2f4f8abd444d113432aef1_D20220101-20220331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNS0xLTEtMS0xMDAwMzY_ea5bf63b-3400-442c-8734-6298f218866b"
      unitRef="shares">1698</us-gaap:StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans>
    <us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
      contextRef="i1fc9801726514305b4f9b2bdf7d77387_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNS05LTEtMS0xMDAwMzY_42c3c61a-bc22-4b82-a0a6-88f42976caea"
      unitRef="usd">147000</us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan>
    <us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNS0xNS0xLTEtMTAwMDM2_c4af56ea-0162-4571-a908-e10e47aca001"
      unitRef="usd">147000</us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan>
    <us-gaap:TreasuryStockSharesAcquired
      contextRef="idd114f039c2f4f8abd444d113432aef1_D20220101-20220331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNi0xLTEtMS0xMDAwMzY_ded3f678-8504-418c-a6cd-7a8fd035fbe3"
      unitRef="shares">121544</us-gaap:TreasuryStockSharesAcquired>
    <us-gaap:TreasuryStockSharesAcquired
      contextRef="ie7c55ab2807f4502a58026a33c40c206_D20220101-20220331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNi01LTEtMS0xMDAwMzY_97bf0b14-740f-48ef-bd73-a38572229859"
      unitRef="shares">121544</us-gaap:TreasuryStockSharesAcquired>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="ie7c55ab2807f4502a58026a33c40c206_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNi03LTEtMS0xMDAwMzY_68606d02-b59e-4b13-bc18-2f71eed4eb58"
      unitRef="usd">15226000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNi0xNS0xLTEtMTAwMDM2_c1317cef-0940-40e1-9275-1f100421a40d"
      unitRef="usd">15226000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:NetIncomeLoss
      contextRef="i7b9811e5d915467c97be523960c15694_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNy0xMS0xLTEtMTAwMDM2_54373a64-206d-453e-9eba-d4ffdee169e6"
      unitRef="usd">12603000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfNy0xNS0xLTEtMTAwMDM2_d021294c-b5b7-4ac2-b53c-237ccceb9ded"
      unitRef="usd">12603000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
      contextRef="i75d8049bb9b74cb18a2bc589da52a8fa_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfOC0xMy0xLTEtMTAwMDM2_162325f3-8858-417b-b8e7-ea46ae342d77"
      unitRef="usd">730000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfOC0xNS0xLTEtMTAwMDM2_b1f8ecf8-ef13-4e1c-b555-8856e1d382f4"
      unitRef="usd">730000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i75d8049bb9b74cb18a2bc589da52a8fa_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfOS0xMy0xLTEtMTAwMDM2_04f402e1-49bd-4f93-8304-f5093e8295b5"
      unitRef="usd">-3000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfOS0xNS0xLTEtMTAwMDM2_fa5ab366-2afe-403d-aa79-09a503d7ba6d"
      unitRef="usd">-3000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i75d8049bb9b74cb18a2bc589da52a8fa_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTAtMTMtMS0xLTEwMDAzNg_7d7def61-91b4-4e2b-91d1-458f09aa3119"
      unitRef="usd">-11000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTAtMTUtMS0xLTEwMDAzNg_1450cf76-3342-467a-8ea6-324ffe67cca0"
      unitRef="usd">-11000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i8124e569001b4e4b82731473fb5747be_I20220331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTEtMS0xLTEtMTAwMDM2_28375fcd-3929-4a00-8c13-bbe4928b03ec"
      unitRef="shares">36120518</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i8124e569001b4e4b82731473fb5747be_I20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTEtMy0xLTEtMTAwMDM2_d2a1b884-331a-4538-95a7-72fdfaa84cfd"
      unitRef="usd">38000</us-gaap:StockholdersEquity>
    <us-gaap:TreasuryStockCommonShares
      contextRef="ibfcbe17b3dac42f7abe430e868e4f22b_I20220331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTEtNS0xLTEtMTAwMDM2_98d904a1-0a83-4973-a88e-1284f040f758"
      unitRef="shares">1910897</us-gaap:TreasuryStockCommonShares>
    <us-gaap:StockholdersEquity
      contextRef="ibfcbe17b3dac42f7abe430e868e4f22b_I20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTEtNy0xLTEtMTAwMDM2_211d6401-6572-41b9-ba26-d99006bc75ba"
      unitRef="usd">-100903000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="if778689a912e42d6b2037b7a25101d96_I20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTEtOS0xLTEtMTAwMDM2_2103f195-9a18-491a-b09b-a7619893e264"
      unitRef="usd">442405000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="iea4c199918fe4c558f469af3807faa16_I20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTEtMTEtMS0xLTEwMDAzNg_d859bdd2-136d-4ad6-8462-51f8226180fa"
      unitRef="usd">150690000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i55d085d612994f239183415316aadc58_I20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTEtMTMtMS0xLTEwMDAzNg_e5421751-f7f7-4b62-99d9-438be9982d9b"
      unitRef="usd">-709000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="iea65401e964c4d079f6a7764673f9d3e_I20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTEtMTUtMS0xLTEwMDAzNg_4c8e5ffe-dfdb-46ab-b7c1-cac1cce7bce0"
      unitRef="usd">491521000</us-gaap:StockholdersEquity>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i0fb6c4ac52bb4e62922d66b045aa21d1_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTMtMS0xLTEtMTAwMDM2_124b09d3-e32b-4553-9451-bdcfff00c575"
      unitRef="shares">36158046</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i0fb6c4ac52bb4e62922d66b045aa21d1_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTMtMy0xLTEtMTAwMDM2_572a8990-52ea-4014-ada9-e3e96b52d22c"
      unitRef="usd">38000</us-gaap:StockholdersEquity>
    <us-gaap:TreasuryStockCommonShares
      contextRef="i8af1540ceff142b6a0d5b42e48a50184_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTMtNS0xLTEtMTAwMDM2_4706e8d2-bb42-4ad7-ab3c-cc0d2c7a95a3"
      unitRef="shares">2151098</us-gaap:TreasuryStockCommonShares>
    <us-gaap:StockholdersEquity
      contextRef="i8af1540ceff142b6a0d5b42e48a50184_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTMtNy0xLTEtMTAwMDM2_36dedc39-95be-4c61-aa05-3e0c60b861af"
      unitRef="usd">-128892000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i6414f87f71f94519989c31299a6bdc50_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTMtOS0xLTEtMTAwMDM2_2aa835f7-d739-469a-b6f8-9522be875dd8"
      unitRef="usd">476117000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i816385f2c35a409ab40061bbedc4ce46_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTMtMTEtMS0xLTEwMDAzNg_55678cc7-6410-42fc-9e24-b131fd0fe117"
      unitRef="usd">193221000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i4efe2f28c7954c8a8aba61558e2a21d5_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTMtMTMtMS0xLTEwMDAzNg_c6527d21-64e9-478c-bce6-8e51bea85eac"
      unitRef="usd">-3411000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTMtMTUtMS0xLTEwMDAzNg_996a33a0-4f35-4f84-bf98-a823bf793b71"
      unitRef="usd">537073000</us-gaap:StockholdersEquity>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="idd022eaf6b814505b1ba92ba75ab3173_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTQtOS0xLTEtMTAwMDM2_866d1b1c-1d72-4ae9-a822-ed424f741500"
      unitRef="usd">11175000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTQtMTUtMS0xLTEwMDAzNg_fa6614a1-ce47-4af2-b1f7-762ce8c9f4b0"
      unitRef="usd">11175000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="i1eab60dc7b84487ca4d1c577cde5b045_D20230101-20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTUtMS0xLTEtMTAwMDM2_e66fb0df-86ec-4322-a264-234594ff6abb"
      unitRef="shares">372161</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="idd022eaf6b814505b1ba92ba75ab3173_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTUtOS0xLTEtMTAwMDM2_1f594f05-7748-496d-b675-6ad85100576c"
      unitRef="usd">2183000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTUtMTUtMS0xLTEwMDAzNg_3ee47344-7fba-4bc1-ac18-93c2adebc468"
      unitRef="usd">2184000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward
      contextRef="ib25032b5986f435ab3c714e9ca244ca6_D20230101-20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTYtMS0xLTEtMTAwMDM2_b9084df6-ad98-44f5-9619-2aa652af1e89"
      unitRef="shares">2549</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward>
    <us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
      contextRef="idd022eaf6b814505b1ba92ba75ab3173_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTYtOS0xLTEtMTAwMDM2_39700f28-d4eb-46dd-8a6c-8e5bd7cb9dd0"
      unitRef="usd">241000</us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan>
    <us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTYtMTUtMS0xLTEwMDAzNg_d2bb90d5-3111-4010-85f9-c5666f7c0c2d"
      unitRef="usd">241000</us-gaap:StockIssuedDuringPeriodValueEmployeeStockPurchasePlan>
    <us-gaap:NetIncomeLoss
      contextRef="ia18cb472d37847b4ae4f0e7c9fcc2093_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTgtMTEtMS0xLTEwMDAzNg_82620c20-cf40-4702-84f0-a471c995fc78"
      unitRef="usd">15289000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTgtMTUtMS0xLTEwMDAzNg_f491704d-3f13-4ea0-8fc6-526bccafa998"
      unitRef="usd">15289000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
      contextRef="i95b3738dd893400f85c8cc20eaee2857_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTktMTMtMS0xLTEwMDAzNg_77dbfcac-f808-492f-896e-0e8c2bffda67"
      unitRef="usd">-95000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMTktMTUtMS0xLTEwMDAzNg_88549927-5ba0-44e2-a8a7-ec68a53c2cb7"
      unitRef="usd">-95000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i95b3738dd893400f85c8cc20eaee2857_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjAtMTMtMS0xLTEwMDAzNg_978b7d93-7748-4bc8-8a69-5fb26caf65f4"
      unitRef="usd">399000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjAtMTUtMS0xLTEwMDAzNg_62c74cfc-7c42-4a32-b4c4-5d4373d1e7f1"
      unitRef="usd">399000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i95b3738dd893400f85c8cc20eaee2857_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjEtMTMtMS0xLTEwMDAzNg_c011e146-4cfc-4b4b-9b2e-638c375c7652"
      unitRef="usd">376000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjEtMTUtMS0xLTEwMDAzNg_bb2af7f1-5736-40bc-b6c6-dc6712ac058c"
      unitRef="usd">376000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ibfb2f662a68c47be9ba841e369ff84b6_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjItMS0xLTEtMTAwMDM2_33d0dc8d-d625-43cd-89aa-67f59325ba58"
      unitRef="shares">36532756</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="ibfb2f662a68c47be9ba841e369ff84b6_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjItMy0xLTEtMTAwMDM2_066d7f82-3a94-44fa-96d4-83081ba67342"
      unitRef="usd">39000</us-gaap:StockholdersEquity>
    <us-gaap:TreasuryStockCommonShares
      contextRef="i12ac53a6dd6f4f92b7a17ef4b5ebd28a_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjItNS0xLTEtMTAwMDM2_75f60d1e-2378-433d-9213-5f6c8fd708c7"
      unitRef="shares">2151098</us-gaap:TreasuryStockCommonShares>
    <us-gaap:StockholdersEquity
      contextRef="i12ac53a6dd6f4f92b7a17ef4b5ebd28a_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjItNy0xLTEtMTAwMDM2_b7fbebc2-c524-419f-a29c-c0caa8e3b0b5"
      unitRef="usd">-128892000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i4911634e78ad4b7eb05c009b2036124f_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjItOS0xLTEtMTAwMDM2_65867986-5637-4fef-91bb-961e5cd10d62"
      unitRef="usd">489716000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7a0dda8262a5406492187cabbd51d4c6_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjItMTEtMS0xLTEwMDAzNg_be800e96-d859-4ef4-aa44-c988e3ec378d"
      unitRef="usd">208510000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i15c6e19508144394b19c34d4451703e8_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjItMTMtMS0xLTEwMDAzNg_864b12ad-09df-4863-b153-44a945aea96b"
      unitRef="usd">-3483000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yMi9mcmFnOmU5YTdiZDE3MjAyYTQxZjlhYjk3ZTdjMzNlZWZlNDc0L3RhYmxlOjhiNjNkOTBiYzNhMDQyMjQ4YjczMDMwMDNmYjYxOGFjL3RhYmxlcmFuZ2U6OGI2M2Q5MGJjM2EwNDIyNDhiNzMwMzAwM2ZiNjE4YWNfMjItMTUtMS0xLTEwMDAzNg_bdcfc3c9-a501-430c-9ebd-8880d3c6075f"
      unitRef="usd">565890000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMy0xLTEtMS0xMDAwMzY_cbb60761-b356-4688-83dc-637639420d02"
      unitRef="usd">15289000</us-gaap:NetIncomeLoss>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfNS0xLTEtMS0xMDAwMzY_8ae2141f-4d3b-44ca-b452-05b123908df1"
      unitRef="usd">-5147000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfNi0xLTEtMS0xMDAwMzY_905f1610-d10c-4697-b5b2-925dcc065b0f"
      unitRef="usd">4626000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfNy0xLTEtMS0xMDAwMzY_c5f387e8-c596-4a5a-ae72-fa29c9f24a42"
      unitRef="usd">3851000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfOC0xLTEtMS0xMDAwMzY_055d7ff9-9d1e-4f6b-a349-7f015a123132"
      unitRef="usd">1206000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ShareBasedCompensation
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfOS0xLTEtMS0xMDAwMzY_1392499d-98e5-408a-a540-2c359689e47b"
      unitRef="usd">11780000</us-gaap:ShareBasedCompensation>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMTAtMS0xLTEtMTAwMDM2_35383620-4312-4f04-ab61-cd12c3e3db31"
      unitRef="usd">-502000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMTItMS0xLTEtMTAwMDM2_137299f3-b419-4d83-8c24-392801bfc96a"
      unitRef="usd">6220000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInDeferredCharges
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMTMtMS0xLTEtMTAwMDM2_33fc6acc-fa2b-4761-bf0a-94a202908f68"
      unitRef="usd">1679000</us-gaap:IncreaseDecreaseInDeferredCharges>
    <us-gaap:IncreaseDecreaseInOtherOperatingAssets
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMTQtMS0xLTEtMTAwMDM2_75f4b31e-7905-4506-8395-c1d3d2c50e7b"
      unitRef="usd">-602000</us-gaap:IncreaseDecreaseInOtherOperatingAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMTUtMS0xLTEtMTAwMDM2_daf1bc7c-ca49-4ae3-b475-0b2b0251f33a"
      unitRef="usd">-4849000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMTYtMS0xLTEtMTAwMDM2_90d9bb58-fe27-45e2-a9ad-c1000c744733"
      unitRef="usd">-4417000</us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMTctMS0xLTEtMTAwMDM2_6bb89a34-05f5-4b0f-a1e1-77ef3e19cec6"
      unitRef="usd">721000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMTgtMS0xLTEtMTAwMDM2_732fc0d5-5e80-4f5f-9072-3e4795cf2e39"
      unitRef="usd">5818000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <spsc:IncreaseDecreaseInOperatingLeases
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMTktMS0xLTEtMTAwMDM2_dce296a0-f4ea-41ca-9eed-1a70118f96cb"
      unitRef="usd">-452000</spsc:IncreaseDecreaseInOperatingLeases>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMjAtMS0xLTEtMTAwMDM2_119d7b0e-5c81-4be5-b0d3-8f0135c69c0b"
      unitRef="usd">21631000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMjItMS0xLTEtMTAwMDM2_0ed43baa-4400-4787-9091-5e5c6036b819"
      unitRef="usd">5261000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquireOtherInvestments
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMjMtMS0xLTEtMTAwMDM2_904a9de6-2a2f-45f0-a01d-3c6c271f8a92"
      unitRef="usd">34329000</us-gaap:PaymentsToAcquireOtherInvestments>
    <us-gaap:ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMjQtMS0xLTEtMTAwMDM2_a2c58df1-a4ba-41e8-a700-fe59ab88b643"
      unitRef="usd">35000000</us-gaap:ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMjYtMS0xLTEtMTAwMDM2_c6d7fc24-81f6-4028-ac6f-06d25d215b3e"
      unitRef="usd">-4590000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMjgtMS0xLTEtMTAwMDM2_01cc1927-5b59-44ef-89af-aa913c690dda"
      unitRef="usd">0</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:ProceedsFromStockOptionsExercised
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMjktMS0xLTEtMTAwMDM2_d8146b94-fd73-4dde-aef5-705deb6b4e1a"
      unitRef="usd">2184000</us-gaap:ProceedsFromStockOptionsExercised>
    <us-gaap:ProceedsFromStockPlans
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMzAtMS0xLTEtMTAwMDM2_1f20da9c-be4a-4d9d-8261-a8545ce14c86"
      unitRef="usd">241000</us-gaap:ProceedsFromStockPlans>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMzItMS0xLTEtMTAwMDM2_99d215f0-f704-49fe-b636-d853d36b7686"
      unitRef="usd">2425000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMzMtMS0xLTEtMTAwMDM2_a16c1271-6bdc-4ad8-bec7-d44676940f69"
      unitRef="usd">-55000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMzQtMS0xLTEtMTAwMDM2_150f25e4-9cc0-4dfa-9522-18a3e1cbad66"
      unitRef="usd">19411000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMzUtMS0xLTEtMTAwMDM2_864b85f3-5d4d-4818-8c7f-800f407255fb"
      unitRef="usd">162893000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8yNS9mcmFnOmU0OGQ5NWE1Y2YyNzQzY2I5MTc1MDc5NWVlMDVlY2RmL3RhYmxlOmEzNWY3M2I2OTgwMzRmZDA5MTEwNGViYzNhM2EyODU3L3RhYmxlcmFuZ2U6YTM1ZjczYjY5ODAzNGZkMDkxMTA0ZWJjM2EzYTI4NTdfMzYtMS0xLTEtMTAwMDM2_0876a895-55d1-4de9-815a-130475487ec1"
      unitRef="usd">182304000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNC9mcmFnOjM5OTZhMjc2Y2QwZTRjN2ZhYmE1MTRlZmU5OWNkMWMwL3RleHRyZWdpb246Mzk5NmEyNzZjZDBlNGM3ZmFiYTUxNGVmZTk5Y2QxYzBfMTcyNg_9e702fe3-4104-412f-be2e-736d928036cc">General&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Business Description&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;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-top:6pt;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 unaudited condensed consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (&#x201c;GAAP&#x201d;) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the condensed consolidated financial statements. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;This interim financial information has been prepared under the instructions to Form 10-Q and Rule 10-01 of Regulation S-X. Accordingly, these condensed consolidated financial statements do not include all of the information and notes required by GAAP. Therefore, these condensed consolidated financial statements should be read in conjunction with the consolidated financial statements and notes included in our Annual Report on Form 10-K for the year ended December&#160;31, 2022, as filed with the Securities and Exchange Commission (&#x201c;SEC&#x201d;). We have included all normal recurring adjustments considered necessary to provide a fair presentation of our financial position, results of operations, stockholders&#x2019; equity, and cash flows for the interim periods presented. Operating results for these interim periods are not necessarily indicative of the results to be expected for the full year.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;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-top:6pt;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;Preparing financial statements in conformity with GAAP requires management to make estimates, judgments, and assumptions that affect the reported amounts of assets and liabilities, disclosure of contingent assets and liabilities at the date of the financial statements, and the reported amounts of revenues and expenses during the reporting periods. Actual results could differ from those estimates.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="background-color:#ffffff;color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Significant Accounting Policies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;There were no material changes in our significant accounting policies during the three months ended March&#160;31, 2023. See Note A to the consolidated financial statements included in our Annual Report on Form 10-K for the year ended &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;December&#160;31, 2022&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;, as filed with the SEC, for additional information regarding our significant accounting policies.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="background-color:#ffffff;color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Accounting Pronouncements Recently Adopted&lt;/span&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:20.566%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.172%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:29.960%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:20.418%"/&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:8pt;font-weight:700;line-height:100%"&gt;Standard&lt;/span&gt;&lt;/td&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;Date of Issuance&lt;/span&gt;&lt;/td&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;Description&lt;/span&gt;&lt;/td&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;Date of Adoption&lt;/span&gt;&lt;/td&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;Effect on the Financial Statements&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:top"&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:700;line-height:115%"&gt;ASU 2021-08, &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;Business Combinations (Topic 805) - Accounting for Contract Assets and Contract Liabilities from Contracts with Customers&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;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;October 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;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;This amendment requires that an acquirer recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Topic 606, effective for all business combinations in the year of adoption and thereafter.&lt;br/&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;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;January 2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;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;The adoption of this standard may have a material impact on the purchase accounting for future business combinations depending on the specific amount of contract assets and liabilities being acquired.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock>
    <spsc:BusinessDescriptionPolicyPolicyTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNC9mcmFnOjM5OTZhMjc2Y2QwZTRjN2ZhYmE1MTRlZmU5OWNkMWMwL3RleHRyZWdpb246Mzk5NmEyNzZjZDBlNGM3ZmFiYTUxNGVmZTk5Y2QxYzBfMTcyNw_8f375777-d8a2-4fb1-af78-cf216044094a">&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Business Description&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;SPS Commerce is a leading provider of cloud-based supply chain management services across our global retail network. Our products make it easier for retailers, grocers, distributors, suppliers, and logistics firms to communicate and collaborate by simplifying how they manage and share item, inventory, order and sales data across omnichannel retail channels. We deliver our products using a full-service model, which includes industry-leading technology and a team of experts that optimize, update, and operate the technology on customers' behalf.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 products enable customers to increase supply chain performance, optimize inventory levels and sell-through, reduce operational costs, improve order visibility, and satisfy consumer demands for a seamless omnichannel experience.&lt;/span&gt;&lt;/div&gt;</spsc:BusinessDescriptionPolicyPolicyTextBlock>
    <us-gaap:BasisOfAccountingPolicyPolicyTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNC9mcmFnOjM5OTZhMjc2Y2QwZTRjN2ZhYmE1MTRlZmU5OWNkMWMwL3RleHRyZWdpb246Mzk5NmEyNzZjZDBlNGM3ZmFiYTUxNGVmZTk5Y2QxYzBfMTcyOA_d0f95d91-2f43-4d54-a5f4-db74c5358498">&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;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-top:6pt;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 unaudited condensed consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (&#x201c;GAAP&#x201d;) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the condensed consolidated financial statements. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;This interim financial information has been prepared under the instructions to Form 10-Q and Rule 10-01 of Regulation S-X. Accordingly, these condensed consolidated financial statements do not include all of the information and notes required by GAAP. Therefore, these condensed consolidated financial statements should be read in conjunction with the consolidated financial statements and notes included in our Annual Report on Form 10-K for the year ended December&#160;31, 2022, as filed with the Securities and Exchange Commission (&#x201c;SEC&#x201d;). We have included all normal recurring adjustments considered necessary to provide a fair presentation of our financial position, results of operations, stockholders&#x2019; equity, and cash flows for the interim periods presented. Operating results for these interim periods are not necessarily indicative of the results to be expected for the full year.&lt;/span&gt;&lt;/div&gt;</us-gaap:BasisOfAccountingPolicyPolicyTextBlock>
    <us-gaap:UseOfEstimates
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNC9mcmFnOjM5OTZhMjc2Y2QwZTRjN2ZhYmE1MTRlZmU5OWNkMWMwL3RleHRyZWdpb246Mzk5NmEyNzZjZDBlNGM3ZmFiYTUxNGVmZTk5Y2QxYzBfMTczNA_98675b3a-dc90-4afe-8f7c-3264741a6bc1">&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;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-top:6pt;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;Preparing financial statements in conformity with GAAP requires management to make estimates, judgments, and assumptions that affect the reported amounts of assets and liabilities, disclosure of contingent assets and liabilities at the date of the financial statements, and the reported amounts of revenues and expenses during the reporting periods. Actual results could differ from those estimates.&lt;/span&gt;&lt;/div&gt;</us-gaap:UseOfEstimates>
    <spsc:SignificantAccountingPoliciesPolicyPolicyTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNC9mcmFnOjM5OTZhMjc2Y2QwZTRjN2ZhYmE1MTRlZmU5OWNkMWMwL3RleHRyZWdpb246Mzk5NmEyNzZjZDBlNGM3ZmFiYTUxNGVmZTk5Y2QxYzBfMTczNw_2f564de4-48ec-490b-ba94-2e59b124f872">&lt;div style="margin-top:12pt"&gt;&lt;span style="background-color:#ffffff;color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Significant Accounting Policies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;There were no material changes in our significant accounting policies during the three months ended March&#160;31, 2023. See Note A to the consolidated financial statements included in our Annual Report on Form 10-K for the year ended &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;December&#160;31, 2022&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;, as filed with the SEC, for additional information regarding our significant accounting policies.&lt;/span&gt;&lt;/div&gt;</spsc:SignificantAccountingPoliciesPolicyPolicyTextBlock>
    <us-gaap:ScheduleOfNewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNC9mcmFnOjM5OTZhMjc2Y2QwZTRjN2ZhYmE1MTRlZmU5OWNkMWMwL3RleHRyZWdpb246Mzk5NmEyNzZjZDBlNGM3ZmFiYTUxNGVmZTk5Y2QxYzBfMTczOA_b439a438-36ad-4d70-8076-8e2769bc69c6">&lt;span style="background-color:#ffffff;color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Accounting Pronouncements Recently Adopted&lt;/span&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:20.566%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.172%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:29.960%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:20.418%"/&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:8pt;font-weight:700;line-height:100%"&gt;Standard&lt;/span&gt;&lt;/td&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;Date of Issuance&lt;/span&gt;&lt;/td&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;Description&lt;/span&gt;&lt;/td&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;Date of Adoption&lt;/span&gt;&lt;/td&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;Effect on the Financial Statements&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:left;vertical-align:top"&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:700;line-height:115%"&gt;ASU 2021-08, &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;Business Combinations (Topic 805) - Accounting for Contract Assets and Contract Liabilities from Contracts with Customers&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;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;October 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;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;This amendment requires that an acquirer recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Topic 606, effective for all business combinations in the year of adoption and thereafter.&lt;br/&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;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;January 2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;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;The adoption of this standard may have a material impact on the purchase accounting for future business combinations depending on the specific amount of contract assets and liabilities being acquired.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfNewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock>
    <us-gaap:BusinessCombinationDisclosureTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNy9mcmFnOmM3YzQ1MDUyYzQ4MTQ5ZWFiODMzMTYzZDU4MzM3NTFlL3RleHRyZWdpb246YzdjNDUwNTJjNDgxNDllYWI4MzMxNjNkNTgzMzc1MWVfNTQ5NzU1ODE0OTI1MA_a0264d8a-c764-48ba-8b7a-448327d60bf8">Business Acquisitions&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%;text-decoration:underline"&gt;GCommerce&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Effective July 19, 2022, we acquired all of the outstanding equity ownership interests of GCommerce, Inc. ("GCommerce"), a leading EDI provider within the automotive aftermarket industry. Pursuant to the definitive agreement, the purchase price was $45.1&#160;million, including post-closing adjustments. The purchase accounting for the acquisition has not been finalized as of March 31, 2023 due primarily to provisional tax components and corresponding impacts to other items, including intangible assets. We expect to finalize the allocation of the purchase price within the one-year measurement period following the acquisition. During the quarter ended March 31, 2023, provisional amounts were adjusted by $1.6&#160;million, primarily relating to a $1.5&#160;million decrease in the estimated value of deferred income tax assets, with the corresponding offset to goodwill. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%;text-decoration:underline"&gt;InterTrade&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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;Effective October 4, 2022, we acquired all of the outstanding equity ownership interests of Canadian based InterTrade Systems Inc. ("InterTrade"), a leading EDI provider within the apparel and general merchandising markets. Pursuant to the definitive agreement, the purchase price was $49.1&#160;million, including estimated post-closing adjustments. The purchase accounting for the acquisition has not been finalized as of March 31, 2023 due to various items including valuation modeling completion; provisional amounts are primarily related to intangible assets. We expect to finalize the allocation of the purchase price within the one-year measurement period following the acquisition. During the quarter ended March 31, 2023, there were no material changes to the provisional amounts.&lt;/span&gt;&lt;/div&gt;</us-gaap:BusinessCombinationDisclosureTextBlock>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="i494bbf45b93640b8b137b284e56fea8c_D20220719-20220719"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNy9mcmFnOmM3YzQ1MDUyYzQ4MTQ5ZWFiODMzMTYzZDU4MzM3NTFlL3RleHRyZWdpb246YzdjNDUwNTJjNDgxNDllYWI4MzMxNjNkNTgzMzc1MWVfMzI5ODUzNDg5MTEwNQ_ffccccad-9968-47f0-b697-b55639a1cb5e"
      unitRef="usd">45100000</us-gaap:BusinessCombinationConsiderationTransferred1>
    <spsc:BusinessCombinationMeasurementPeriod
      contextRef="i494bbf45b93640b8b137b284e56fea8c_D20220719-20220719"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNy9mcmFnOmM3YzQ1MDUyYzQ4MTQ5ZWFiODMzMTYzZDU4MzM3NTFlL3RleHRyZWdpb246YzdjNDUwNTJjNDgxNDllYWI4MzMxNjNkNTgzMzc1MWVfMzI5ODUzNDg5MTEyOQ_fa4ce734-f5d1-4cd9-88e5-587615511aa4">P1Y</spsc:BusinessCombinationMeasurementPeriod>
    <us-gaap:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred
      contextRef="i0548f3e001a74dfe9ff742bd06bf5d1d_D20230101-20230331"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNy9mcmFnOmM3YzQ1MDUyYzQ4MTQ5ZWFiODMzMTYzZDU4MzM3NTFlL3RleHRyZWdpb246YzdjNDUwNTJjNDgxNDllYWI4MzMxNjNkNTgzMzc1MWVfNTQ5NzU1ODE0OTIyMw_5626d4c3-273b-4953-91e1-0ae64df585c9"
      unitRef="usd">-1600000</us-gaap:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred>
    <spsc:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredIncomeTaxAssets
      contextRef="i0548f3e001a74dfe9ff742bd06bf5d1d_D20230101-20230331"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNy9mcmFnOmM3YzQ1MDUyYzQ4MTQ5ZWFiODMzMTYzZDU4MzM3NTFlL3RleHRyZWdpb246YzdjNDUwNTJjNDgxNDllYWI4MzMxNjNkNTgzMzc1MWVfNTQ5NzU1ODE0OTIzNw_5985d9cf-0ac4-411a-8ea0-b6168a35b20d"
      unitRef="usd">-1500000</spsc:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredIncomeTaxAssets>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="ibeb5587d4f8d49878baf94f9edca4f5c_D20221004-20221004"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNy9mcmFnOmM3YzQ1MDUyYzQ4MTQ5ZWFiODMzMTYzZDU4MzM3NTFlL3RleHRyZWdpb246YzdjNDUwNTJjNDgxNDllYWI4MzMxNjNkNTgzMzc1MWVfMTY0OTI2NzQ0NTMzNA_0c970860-de5d-4659-a7a5-5f13350c1729"
      unitRef="usd">49100000</us-gaap:BusinessCombinationConsiderationTransferred1>
    <spsc:BusinessCombinationMeasurementPeriod
      contextRef="ibeb5587d4f8d49878baf94f9edca4f5c_D20221004-20221004"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl8zNy9mcmFnOmM3YzQ1MDUyYzQ4MTQ5ZWFiODMzMTYzZDU4MzM3NTFlL3RleHRyZWdpb246YzdjNDUwNTJjNDgxNDllYWI4MzMxNjNkNTgzMzc1MWVfMzI5ODUzNDg5MTE0MA_28d85d8c-ff1a-4ca9-96a9-fe17d3846fe3">P1Y</spsc:BusinessCombinationMeasurementPeriod>
    <us-gaap:RevenueFromContractWithCustomerTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RleHRyZWdpb246ZGQzMzAxNWIzY2Y0NDFjNGE0OWE3MGEwMjQxMzYzNTVfMTExOQ_cf2c38a3-ff45-4845-8774-ca90e54e4a03">Revenue &lt;div style="margin-top:6pt;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 derive our revenues from the following revenue streams:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.545%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.807%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.142%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.143%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Recurring revenues:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;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 #000;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="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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fulfillment&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;101,668&#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;84,731&#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="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 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Analytics&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;12,370&#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,296&#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="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 10pt;text-align:left;vertical-align: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:#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,263&#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,540&#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="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;Recurring revenues&lt;/span&gt;&lt;/td&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;117,301&#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 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;97,567&#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="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;One-time revenues&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;8,567&#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;7,626&#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="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 2px 13pt;text-align:left;vertical-align: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 revenue&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;125,868&#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;105,193&#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="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;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Revenues are the amount that reflects the consideration we are contractually and legally entitled to, as well as the amount we expect to collect, in exchange for those services.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Recurring Revenues&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Recurring revenues consist of recurring subscriptions from customers that utilize our Fulfillment, Analytics, and Other supply chain management products. Revenue for these products is generally recognized on a ratable basis over the contract term beginning on the date that our service is made available to the customer. Our contracts with our recurring revenue customers are recurring in nature, generally ranging from monthly to annual, and generally allow the customer to cancel the contract for any reason with 30 to 90 days&#x2019; notice. Timing of billings varies by customer and by contract type and generally are either in advance or within 30 days of the service being performed.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Given that the recurring revenue contracts are for one year or less, we have applied the optional exemption to not disclose information about the remaining performance obligations for recurring revenue contracts.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;One-time Revenues&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;One-time revenues consist of set-up fees and miscellaneous fees from customers.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Set-up revenues&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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-up fees are specific for each connection a customer has with a trading partner. These nonrefundable fees are necessary for our customers to utilize our services and do not provide any standalone value. Many of our customers have connections with numerous trading partners.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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-up fees constitute a material renewal option right that provide customers a significant future incentive that would not be otherwise available to that customer unless they entered into the contract, as the set-up fees will not be incurred again upon contract renewal. As such, set-up fees and related costs are deferred and recognized ratably over two years which is the estimated period for which a material right is present for our customers.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;padding-left: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 table below presents the activity of the portion of the deferred revenue liability relating to set-up fees: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.090%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.682%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.202%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.411%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.205%"/&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 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="padding:0 1pt"/&gt;&lt;td colspan="9" 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:8pt;font-weight:700;line-height:100%"&gt;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;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;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;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="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;Balance, beginning of period&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;14,999&#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;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-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;14,459&#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="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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Invoiced set-up fees&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;4,251&#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,003&#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="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 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Recognized set-up fees&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,963)&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,524)&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="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;Balance, end of period&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;15,287&#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;14,938&#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="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;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 entire balance of deferred set-up fees will be recognized within two years. Those that will be recognized within the next year are classified as current, whereas the remainder are classified as non-current.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&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;Miscellaneous one-time revenues&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Miscellaneous one-time fees consist of professional services and testing and certification. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 contract period for these one-time fees is for one year or less and recognized at the time service is provided. We have applied the optional exemption to not disclose information about the remaining performance obligations for miscellaneous one-time fee contracts since they have original durations of one year or less.&lt;/span&gt;&lt;/div&gt;</us-gaap:RevenueFromContractWithCustomerTextBlock>
    <us-gaap:DisaggregationOfRevenueTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RleHRyZWdpb246ZGQzMzAxNWIzY2Y0NDFjNGE0OWE3MGEwMjQxMzYzNTVfMTEyMA_9db2c99f-3004-4428-b4c3-e10d7fffadcb">&lt;div style="margin-top:6pt;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 derive our revenues from the following revenue streams:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.545%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.807%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.142%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.143%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Recurring revenues:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;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 #000;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="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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fulfillment&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;101,668&#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;84,731&#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="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 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Analytics&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;12,370&#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,296&#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="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 10pt;text-align:left;vertical-align: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:#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,263&#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,540&#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="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;Recurring revenues&lt;/span&gt;&lt;/td&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;117,301&#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 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;97,567&#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="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;One-time revenues&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;8,567&#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;7,626&#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="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 2px 13pt;text-align:left;vertical-align: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 revenue&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;125,868&#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;105,193&#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="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;/table&gt;&lt;/div&gt;</us-gaap:DisaggregationOfRevenueTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i5e5f3e01a4554a07ace384858fe9fe50_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfMy0xLTEtMS0xMDAwMzY_d6b7dbbe-d55b-4f5e-8503-45a097078acf"
      unitRef="usd">101668000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ic23344cee2e746358b8076d9aa27eb34_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfMy0zLTEtMS0xMDAwMzY_26f8574b-1869-4a97-82d1-7b9604644174"
      unitRef="usd">84731000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie322d516768a46d3840f582881367ef1_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfNC0xLTEtMS0xMDAwMzY_12e51868-92c6-4e26-b2f8-97c873196b09"
      unitRef="usd">12370000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i66eb5ae5d9f648d1be790070d3eb42fb_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfNC0zLTEtMS0xMDAwMzY_183341ae-50a9-4f17-bc1f-8f9af90c54e0"
      unitRef="usd">11296000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i430fe804c8354c35acdbac54c1a8103f_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfNS0xLTEtMS0xMDAwMzY_c9313772-5e21-4efc-a6e7-102a63218fad"
      unitRef="usd">3263000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i483819e474e64d97b8cae765a6e4a1fc_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfNS0zLTEtMS0xMDAwMzY_2daf1468-0039-4647-bab1-2677f980ef8b"
      unitRef="usd">1540000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ic7f5ba10540447178ab71b4bb94aec7a_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfNi0xLTEtMS0xMDAwMzY_a51fa14c-a5c0-4a4c-ac48-405bce682f50"
      unitRef="usd">117301000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i466b3e33d52b4738bb24fb4712caadf1_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfNi0zLTEtMS0xMDAwMzY_45940921-5184-4bda-adb9-bbbcef80deb8"
      unitRef="usd">97567000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="if42252827934498bbe58d7c7792a6ce5_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfNy0xLTEtMS0xMDAwMzY_988eead5-1648-4ff5-939e-c2464d64b763"
      unitRef="usd">8567000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i1bd93224c1834afcaecf43afdfecbc56_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfNy0zLTEtMS0xMDAwMzY_c4fb19df-dd6a-4a2e-a054-5c867a308f8d"
      unitRef="usd">7626000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfOC0xLTEtMS0xMDAwMzY_3e245610-c044-4b6d-a25b-01192a57c712"
      unitRef="usd">125868000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOjM3OGZiMTlhMDM2ZTRjNjNiNjJiMmNlNTJiYjczMjBkL3RhYmxlcmFuZ2U6Mzc4ZmIxOWEwMzZlNGM2M2I2MmIyY2U1MmJiNzMyMGRfOC0zLTEtMS0xMDAwMzY_cde8a01c-5edd-4a37-b567-387c45a6b9f5"
      unitRef="usd">105193000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <spsc:CustomerContractCancellationPeriod
      contextRef="i492ea2be0bc2406a877c7ea5f708a619_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RleHRyZWdpb246ZGQzMzAxNWIzY2Y0NDFjNGE0OWE3MGEwMjQxMzYzNTVfNTM_249f2fd3-3812-4543-93e7-a8ba7932d922">P30D</spsc:CustomerContractCancellationPeriod>
    <spsc:CustomerContractCancellationPeriod
      contextRef="i62d7c092a8b141fc9e9a77bf6fd97969_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RleHRyZWdpb246ZGQzMzAxNWIzY2Y0NDFjNGE0OWE3MGEwMjQxMzYzNTVfNTk_05f6a67c-aa49-467e-82fd-ec2fc7539241">P90D</spsc:CustomerContractCancellationPeriod>
    <spsc:RecurringRevenuesTimingOfBillingsLatestPeriod
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RleHRyZWdpb246ZGQzMzAxNWIzY2Y0NDFjNGE0OWE3MGEwMjQxMzYzNTVfMTc2_f9b9b3ec-fa36-4824-ba24-f4d234920760">P30D</spsc:RecurringRevenuesTimingOfBillingsLatestPeriod>
    <spsc:ContractTermMaximum
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RleHRyZWdpb246ZGQzMzAxNWIzY2Y0NDFjNGE0OWE3MGEwMjQxMzYzNTVfMjYy_a28afaa8-2b7f-4046-8a80-613a887b9f5e">P1Y</spsc:ContractTermMaximum>
    <spsc:SetUpFeesRecognizedPeriod
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RleHRyZWdpb246ZGQzMzAxNWIzY2Y0NDFjNGE0OWE3MGEwMjQxMzYzNTVfNDYx_8bc16dff-dada-405c-906d-13b7579c903b">P2Y</spsc:SetUpFeesRecognizedPeriod>
    <us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RleHRyZWdpb246ZGQzMzAxNWIzY2Y0NDFjNGE0OWE3MGEwMjQxMzYzNTVfMTExOA_b9edb3db-4591-4fba-8467-0cf41b27669a">&lt;div style="margin-top:6pt;padding-left: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 table below presents the activity of the portion of the deferred revenue liability relating to set-up fees: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.090%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.682%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.202%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.411%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.205%"/&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 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="padding:0 1pt"/&gt;&lt;td colspan="9" 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:8pt;font-weight:700;line-height:100%"&gt;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;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;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;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="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;Balance, beginning of period&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;14,999&#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;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-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;14,459&#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="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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Invoiced set-up fees&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;4,251&#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,003&#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="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 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Recognized set-up fees&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,963)&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,524)&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="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;Balance, end of period&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;15,287&#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;14,938&#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="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;/table&gt;&lt;/div&gt;</us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i33903016b04043ff8f3b903207f93675_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOmFmODNhMWZmMzQ1ZDRlOTI4ZWQzMDhmMmM3ZTYxOWRkL3RhYmxlcmFuZ2U6YWY4M2ExZmYzNDVkNGU5MjhlZDMwOGYyYzdlNjE5ZGRfMi0xLTEtMS0xMDAwMzY_6988b606-3da3-4e0d-9565-34fcd34f002c"
      unitRef="usd">14999000</us-gaap:ContractWithCustomerLiability>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i0727a052638340d28c42291a37278daf_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOmFmODNhMWZmMzQ1ZDRlOTI4ZWQzMDhmMmM3ZTYxOWRkL3RhYmxlcmFuZ2U6YWY4M2ExZmYzNDVkNGU5MjhlZDMwOGYyYzdlNjE5ZGRfMi0zLTEtMS0xMDAwMzY_bcfa9865-24e2-4a67-a079-246d85c12dcf"
      unitRef="usd">14459000</us-gaap:ContractWithCustomerLiability>
    <spsc:DeferredRevenueInvoicedSetUpFees
      contextRef="i7c34593b80204d5f877eca45dd51d401_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOmFmODNhMWZmMzQ1ZDRlOTI4ZWQzMDhmMmM3ZTYxOWRkL3RhYmxlcmFuZ2U6YWY4M2ExZmYzNDVkNGU5MjhlZDMwOGYyYzdlNjE5ZGRfMy0xLTEtMS0xMDAwMzY_7dd5b24d-ca5f-49c3-9efa-837f098a816f"
      unitRef="usd">4251000</spsc:DeferredRevenueInvoicedSetUpFees>
    <spsc:DeferredRevenueInvoicedSetUpFees
      contextRef="i88aef2c21a2d44408cff8c9801e859c8_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOmFmODNhMWZmMzQ1ZDRlOTI4ZWQzMDhmMmM3ZTYxOWRkL3RhYmxlcmFuZ2U6YWY4M2ExZmYzNDVkNGU5MjhlZDMwOGYyYzdlNjE5ZGRfMy0zLTEtMS0xMDAwMzY_263415d5-9259-48c4-ae3a-441951108b60"
      unitRef="usd">4003000</spsc:DeferredRevenueInvoicedSetUpFees>
    <spsc:DeferredRevenueAmortizedSetUpFees
      contextRef="i7c34593b80204d5f877eca45dd51d401_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOmFmODNhMWZmMzQ1ZDRlOTI4ZWQzMDhmMmM3ZTYxOWRkL3RhYmxlcmFuZ2U6YWY4M2ExZmYzNDVkNGU5MjhlZDMwOGYyYzdlNjE5ZGRfNC0xLTEtMS0xMDAwMzY_02df2aaf-c4eb-44d8-9ec3-67e0b708a009"
      unitRef="usd">3963000</spsc:DeferredRevenueAmortizedSetUpFees>
    <spsc:DeferredRevenueAmortizedSetUpFees
      contextRef="i88aef2c21a2d44408cff8c9801e859c8_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOmFmODNhMWZmMzQ1ZDRlOTI4ZWQzMDhmMmM3ZTYxOWRkL3RhYmxlcmFuZ2U6YWY4M2ExZmYzNDVkNGU5MjhlZDMwOGYyYzdlNjE5ZGRfNC0zLTEtMS0xMDAwMzY_cfaffda3-6a78-45a4-926c-24022c691983"
      unitRef="usd">3524000</spsc:DeferredRevenueAmortizedSetUpFees>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i8f43e591125d49a89354fae41f4ec9e1_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOmFmODNhMWZmMzQ1ZDRlOTI4ZWQzMDhmMmM3ZTYxOWRkL3RhYmxlcmFuZ2U6YWY4M2ExZmYzNDVkNGU5MjhlZDMwOGYyYzdlNjE5ZGRfNS0xLTEtMS0xMDAwMzY_fc36dd9e-c049-4145-ab80-baa28d8c9336"
      unitRef="usd">15287000</us-gaap:ContractWithCustomerLiability>
    <us-gaap:ContractWithCustomerLiability
      contextRef="iee085911fef74ba4bab1072985c39349_I20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RhYmxlOmFmODNhMWZmMzQ1ZDRlOTI4ZWQzMDhmMmM3ZTYxOWRkL3RhYmxlcmFuZ2U6YWY4M2ExZmYzNDVkNGU5MjhlZDMwOGYyYzdlNjE5ZGRfNS0zLTEtMS0xMDAwMzY_9e89188b-36e1-4345-9b2a-a943d3bb1644"
      unitRef="usd">14938000</us-gaap:ContractWithCustomerLiability>
    <spsc:SetUpFeesRecognizedPeriod
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RleHRyZWdpb246ZGQzMzAxNWIzY2Y0NDFjNGE0OWE3MGEwMjQxMzYzNTVfNTQx_d209666b-70c5-4a1b-bb20-a443ba14d450">P2Y</spsc:SetUpFeesRecognizedPeriod>
    <spsc:MaximumRecognitionPeriodForMiscellaneousOneTimeFee
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80MC9mcmFnOmRkMzMwMTViM2NmNDQxYzRhNDlhNzBhMDI0MTM2MzU1L3RleHRyZWdpb246ZGQzMzAxNWIzY2Y0NDFjNGE0OWE3MGEwMjQxMzYzNTVfODUy_1b71ba08-ebd7-4807-bd97-c14f9393d4b8">P1Y</spsc:MaximumRecognitionPeriodForMiscellaneousOneTimeFee>
    <spsc:DeferredCostsDisclosureTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80My9mcmFnOjJmNWQ3YzFkMTBkYTQ5MWNiMGViZDUwMjNkMjMxZGU5L3RleHRyZWdpb246MmY1ZDdjMWQxMGRhNDkxY2IwZWJkNTAyM2QyMzFkZTlfMzI_95920f3d-8b40-4b34-8533-b6fb068b6002">Deferred Costs&lt;div style="margin-top:6pt;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 deferred costs activity was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.696%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.121%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.407%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.124%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&lt;/span&gt;&lt;/td&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="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;Balance, beginning of period&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;70,179&#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;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-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;59,720&#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="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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Incurred deferred 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;18,234&#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,781&#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="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 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Amortized deferred costs&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;(16,604)&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;(14,891)&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="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;Balance, end of period&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;71,809&#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;62,610&#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="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;/table&gt;&lt;/div&gt;</spsc:DeferredCostsDisclosureTextBlock>
    <spsc:DeferredCostsAndAmortizationTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80My9mcmFnOjJmNWQ3YzFkMTBkYTQ5MWNiMGViZDUwMjNkMjMxZGU5L3RleHRyZWdpb246MmY1ZDdjMWQxMGRhNDkxY2IwZWJkNTAyM2QyMzFkZTlfMzM_430c411b-2e26-4445-9877-233c4690a478">&lt;div style="margin-top:6pt;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 deferred costs activity was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.696%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.848%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.121%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.407%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.124%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&lt;/span&gt;&lt;/td&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="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;Balance, beginning of period&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;70,179&#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;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-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;59,720&#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="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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Incurred deferred 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;18,234&#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,781&#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="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 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Amortized deferred costs&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;(16,604)&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;(14,891)&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="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;Balance, end of period&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;71,809&#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;62,610&#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="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;/table&gt;&lt;/div&gt;</spsc:DeferredCostsAndAmortizationTableTextBlock>
    <us-gaap:DeferredCostsCurrentAndNoncurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80My9mcmFnOjJmNWQ3YzFkMTBkYTQ5MWNiMGViZDUwMjNkMjMxZGU5L3RhYmxlOmNlYWM0OTZlNDgxMTRkYWY5YmVhMWJkYTc0NDU4NjdmL3RhYmxlcmFuZ2U6Y2VhYzQ5NmU0ODExNGRhZjliZWExYmRhNzQ0NTg2N2ZfMi0xLTEtMS0xMDAwMzY_6b75e569-89eb-4d63-bbe4-2afea2833c85"
      unitRef="usd">70179000</us-gaap:DeferredCostsCurrentAndNoncurrent>
    <us-gaap:DeferredCostsCurrentAndNoncurrent
      contextRef="id23181cd6ae24a028a249a4d25818065_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80My9mcmFnOjJmNWQ3YzFkMTBkYTQ5MWNiMGViZDUwMjNkMjMxZGU5L3RhYmxlOmNlYWM0OTZlNDgxMTRkYWY5YmVhMWJkYTc0NDU4NjdmL3RhYmxlcmFuZ2U6Y2VhYzQ5NmU0ODExNGRhZjliZWExYmRhNzQ0NTg2N2ZfMi0zLTEtMS0xMDAwMzY_ea0b8ec6-cd3e-4f54-984a-1787ff20654b"
      unitRef="usd">59720000</us-gaap:DeferredCostsCurrentAndNoncurrent>
    <spsc:DeferredCostsIncurred
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80My9mcmFnOjJmNWQ3YzFkMTBkYTQ5MWNiMGViZDUwMjNkMjMxZGU5L3RhYmxlOmNlYWM0OTZlNDgxMTRkYWY5YmVhMWJkYTc0NDU4NjdmL3RhYmxlcmFuZ2U6Y2VhYzQ5NmU0ODExNGRhZjliZWExYmRhNzQ0NTg2N2ZfMy0xLTEtMS0xMDAwMzY_586d9fe0-fc09-4dc0-9005-98d976ff9bec"
      unitRef="usd">18234000</spsc:DeferredCostsIncurred>
    <spsc:DeferredCostsIncurred
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80My9mcmFnOjJmNWQ3YzFkMTBkYTQ5MWNiMGViZDUwMjNkMjMxZGU5L3RhYmxlOmNlYWM0OTZlNDgxMTRkYWY5YmVhMWJkYTc0NDU4NjdmL3RhYmxlcmFuZ2U6Y2VhYzQ5NmU0ODExNGRhZjliZWExYmRhNzQ0NTg2N2ZfMy0zLTEtMS0xMDAwMzY_603adff0-3f86-4529-8cbc-3c63652b5403"
      unitRef="usd">17781000</spsc:DeferredCostsIncurred>
    <spsc:DeferredCostsAmortized
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80My9mcmFnOjJmNWQ3YzFkMTBkYTQ5MWNiMGViZDUwMjNkMjMxZGU5L3RhYmxlOmNlYWM0OTZlNDgxMTRkYWY5YmVhMWJkYTc0NDU4NjdmL3RhYmxlcmFuZ2U6Y2VhYzQ5NmU0ODExNGRhZjliZWExYmRhNzQ0NTg2N2ZfNC0xLTEtMS0xMDAwMzY_c7da3cc0-4972-414d-8c76-3338c4cd9854"
      unitRef="usd">-16604000</spsc:DeferredCostsAmortized>
    <spsc:DeferredCostsAmortized
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80My9mcmFnOjJmNWQ3YzFkMTBkYTQ5MWNiMGViZDUwMjNkMjMxZGU5L3RhYmxlOmNlYWM0OTZlNDgxMTRkYWY5YmVhMWJkYTc0NDU4NjdmL3RhYmxlcmFuZ2U6Y2VhYzQ5NmU0ODExNGRhZjliZWExYmRhNzQ0NTg2N2ZfNC0zLTEtMS0xMDAwMzY_0ef3998f-95c6-4566-acb6-0823db1382d6"
      unitRef="usd">-14891000</spsc:DeferredCostsAmortized>
    <us-gaap:DeferredCostsCurrentAndNoncurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80My9mcmFnOjJmNWQ3YzFkMTBkYTQ5MWNiMGViZDUwMjNkMjMxZGU5L3RhYmxlOmNlYWM0OTZlNDgxMTRkYWY5YmVhMWJkYTc0NDU4NjdmL3RhYmxlcmFuZ2U6Y2VhYzQ5NmU0ODExNGRhZjliZWExYmRhNzQ0NTg2N2ZfNS0xLTEtMS0xMDAwMzY_6cf4f89d-fca2-4629-9fbf-9d677a07a953"
      unitRef="usd">71809000</us-gaap:DeferredCostsCurrentAndNoncurrent>
    <us-gaap:DeferredCostsCurrentAndNoncurrent
      contextRef="iea65401e964c4d079f6a7764673f9d3e_I20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80My9mcmFnOjJmNWQ3YzFkMTBkYTQ5MWNiMGViZDUwMjNkMjMxZGU5L3RhYmxlOmNlYWM0OTZlNDgxMTRkYWY5YmVhMWJkYTc0NDU4NjdmL3RhYmxlcmFuZ2U6Y2VhYzQ5NmU0ODExNGRhZjliZWExYmRhNzQ0NTg2N2ZfNS0zLTEtMS0xMDAwMzY_322dcfeb-4404-44fa-8f35-e5025af6a767"
      unitRef="usd">62610000</us-gaap:DeferredCostsCurrentAndNoncurrent>
    <us-gaap:FinancialInstrumentsDisclosureTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RleHRyZWdpb246NDExNGI5ZTkxZjE5NDhkODkzNmY5MzhkY2YzODEyM2JfMzU2_f7d10a43-99e8-4d51-b75c-048345ac5cfb">Fair Value Measurements&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Cash Equivalents and Investments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-indent:27pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash equivalents and investments, as measured at fair value on a recurring basis, consisted of the following:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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:25.869%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:6.778%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.051%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.051%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.051%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.051%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.051%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.056%"/&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:0 1pt"/&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;March 31, 2023&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;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt 0 13pt"/&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:114%"&gt;Fair Value Level&lt;/span&gt;&lt;/td&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:114%"&gt;Amortized Cost&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:114%"&gt;Unrealized Gains (Losses), net&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:114%"&gt;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 #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:114%"&gt;Amortized Cost&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:114%"&gt;Unrealized Gains (Losses), net&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:114%"&gt;Fair Value&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:700;line-height:114%"&gt;(in thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;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:700;line-height:114%"&gt;Cash equivalents:&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;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;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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;Money market funds&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:114%"&gt;Level 1&lt;/span&gt;&lt;/td&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:114%"&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:114%"&gt;94,284&#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:114%"&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:114%"&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:114%"&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:114%"&gt;94,284&#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:114%"&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:114%"&gt;73,368&#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:114%"&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:114%"&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;73,368&#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:700;line-height:114%"&gt;Investments:&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;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;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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;Certificates of deposit&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:114%"&gt;Level 1&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:114%"&gt;6,687&#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:114%"&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:114%"&gt;6,687&#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:114%"&gt;6,813&#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:114%"&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;6,813&#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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;Marketable 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="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;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 2px 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:114%"&gt;Commercial paper&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:114%"&gt;Level 2&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:114%"&gt;34,228&#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:114%"&gt;353&#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:114%"&gt;34,581&#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:114%"&gt;44,224&#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:114%"&gt;375&#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;44,599&#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 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:114%"&gt;U.S. treasury 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: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:114%"&gt;Level 2&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:114%"&gt;9,827&#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:114%"&gt;51&#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:114%"&gt;9,878&#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:114%"&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:114%"&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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 13pt"/&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 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:114%"&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:114%"&gt;145,026&#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:114%"&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:114%"&gt;404&#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:114%"&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:114%"&gt;145,430&#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:114%"&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:114%"&gt;124,405&#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:114%"&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:114%"&gt;375&#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:114%"&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:114%"&gt;124,780&#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;</us-gaap:FinancialInstrumentsDisclosureTextBlock>
    <us-gaap:ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RleHRyZWdpb246NDExNGI5ZTkxZjE5NDhkODkzNmY5MzhkY2YzODEyM2JfMzI5ODUzNDg4NDExNQ_37ee6cc4-b065-4bba-bcd9-066b1817e44c">&lt;div style="margin-top:6pt;text-indent:27pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash equivalents and investments, as measured at fair value on a recurring basis, consisted of the following:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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:25.869%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:6.778%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.051%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.051%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.051%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.051%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.051%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.056%"/&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:0 1pt"/&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;March 31, 2023&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;December 31, 2022&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt 0 13pt"/&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:114%"&gt;Fair Value Level&lt;/span&gt;&lt;/td&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:114%"&gt;Amortized Cost&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:114%"&gt;Unrealized Gains (Losses), net&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:114%"&gt;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 #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:114%"&gt;Amortized Cost&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:114%"&gt;Unrealized Gains (Losses), net&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:114%"&gt;Fair Value&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:700;line-height:114%"&gt;(in thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000;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:700;line-height:114%"&gt;Cash equivalents:&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;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;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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;Money market funds&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:114%"&gt;Level 1&lt;/span&gt;&lt;/td&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:114%"&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:114%"&gt;94,284&#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:114%"&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:114%"&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:114%"&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:114%"&gt;94,284&#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:114%"&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:114%"&gt;73,368&#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:114%"&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:114%"&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;73,368&#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:700;line-height:114%"&gt;Investments:&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;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;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 2px 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;Certificates of deposit&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:114%"&gt;Level 1&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:114%"&gt;6,687&#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:114%"&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:114%"&gt;6,687&#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:114%"&gt;6,813&#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:114%"&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;6,813&#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 13pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;Marketable 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="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;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 2px 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:114%"&gt;Commercial paper&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:114%"&gt;Level 2&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:114%"&gt;34,228&#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:114%"&gt;353&#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:114%"&gt;34,581&#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:114%"&gt;44,224&#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:114%"&gt;375&#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;44,599&#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 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:114%"&gt;U.S. treasury 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: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:114%"&gt;Level 2&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:114%"&gt;9,827&#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:114%"&gt;51&#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:114%"&gt;9,878&#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:114%"&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:114%"&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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt 0 13pt"/&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 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:114%"&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:114%"&gt;145,026&#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:114%"&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:114%"&gt;404&#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:114%"&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:114%"&gt;145,430&#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:114%"&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:114%"&gt;124,405&#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:114%"&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:114%"&gt;375&#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:114%"&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:114%"&gt;124,780&#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;</us-gaap:ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ib95cb9989143445f9a7e651950c32288_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNC00LTEtMS0xMTA2OTM_392bd178-9318-4f98-b8d6-2846ea104a6e"
      unitRef="usd">94284000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
      contextRef="ib95cb9989143445f9a7e651950c32288_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNC02LTEtMS0xMTA2OTM_ed595a74-b956-4243-8da2-74e9616dc6fa"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ib95cb9989143445f9a7e651950c32288_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNC04LTEtMS0xMTA2OTM_020cac6d-02a1-42e0-989b-82a5c9d80a59"
      unitRef="usd">94284000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i1b7e5436e1104d35b4b017c4042ef741_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNC0xMC0xLTEtMTEwNjkz_17ac1eb5-1eb3-44ea-ae88-5d7c69d0e6df"
      unitRef="usd">73368000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
      contextRef="i1b7e5436e1104d35b4b017c4042ef741_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNC0xMi0xLTEtMTEwNjkz_b3a269f9-022d-4c67-8764-a6add7f636e2"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i1b7e5436e1104d35b4b017c4042ef741_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNC0xNC0xLTEtMTEwNjkz_0233185d-e63c-4ae6-87d4-28941a3ed62f"
      unitRef="usd">73368000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i06db95e3caa74fd69f6bf699dc8553ac_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNi00LTEtMS0xMTA2OTM_a75b75e2-1db6-4139-bccf-988802a0afa7"
      unitRef="usd">6687000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
      contextRef="i06db95e3caa74fd69f6bf699dc8553ac_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNi02LTEtMS0xMTA2OTM_497a30b4-3599-46c6-8936-49812da8db70"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i06db95e3caa74fd69f6bf699dc8553ac_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNi04LTEtMS0xMTA2OTM_9f0052a6-e6dd-40e4-b305-a23c5e62209a"
      unitRef="usd">6687000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i9978aeb34edf49fdb2b635d1da947f0f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNi0xMC0xLTEtMTEwNjkz_be38e3bb-3fa3-418f-bcf8-2ae2b75a134b"
      unitRef="usd">6813000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
      contextRef="i9978aeb34edf49fdb2b635d1da947f0f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNi0xMi0xLTEtMTEwNjkz_35ab97fa-ffbb-4727-aa02-b41f8c2a0017"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i9978aeb34edf49fdb2b635d1da947f0f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfNi0xNC0xLTEtMTEwNjkz_b33ef3bb-ca2b-4132-acc0-1ebe3809b755"
      unitRef="usd">6813000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i3d24870a54cb4537b1c2ea12039f0869_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOC00LTEtMS0xMTA2OTM_90eab4a0-349c-40fe-a3ce-48f6e3bfe8e6"
      unitRef="usd">34228000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
      contextRef="i3d24870a54cb4537b1c2ea12039f0869_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOC02LTEtMS0xMTA2OTM_3f645256-bfa5-4549-a430-96e5a1a12759"
      unitRef="usd">353000</us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i3d24870a54cb4537b1c2ea12039f0869_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOC04LTEtMS0xMTA2OTM_589c2f70-6e02-43e3-aaf8-e016495e6896"
      unitRef="usd">34581000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i3938b8743ba341c6b9496d0431a386f7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOC0xMC0xLTEtMTEwNjkz_1216abe2-3960-4809-9f44-d5395b4af597"
      unitRef="usd">44224000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
      contextRef="i3938b8743ba341c6b9496d0431a386f7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOC0xMi0xLTEtMTEwNjkz_0f5264a7-19f2-4faa-8718-8d9173e1cb50"
      unitRef="usd">375000</us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i3938b8743ba341c6b9496d0431a386f7_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOC0xNC0xLTEtMTEwNjkz_4fcded39-7076-4b50-8923-48d044a5abc6"
      unitRef="usd">44599000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i27fdedb4de714a9fbe01d6729cbbec8e_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOS00LTEtMS0xMTA2OTM_4aa680e3-0378-431b-85d2-93632fa71ada"
      unitRef="usd">9827000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
      contextRef="i27fdedb4de714a9fbe01d6729cbbec8e_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOS02LTEtMS0xMTA2OTM_a986f535-d0cf-4218-af27-ff1903c9a688"
      unitRef="usd">51000</us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i27fdedb4de714a9fbe01d6729cbbec8e_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOS04LTEtMS0xMTA2OTM_75e6c2d1-3a35-46c9-bbf7-dcc670fbbcb3"
      unitRef="usd">9878000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i0fbb80009f17498db74b94eaf27cb4fe_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOS0xMC0xLTEtMTEwNjkz_0a0ea0ee-c4e4-463e-bdfd-68f7d8a8cc48"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
      contextRef="i0fbb80009f17498db74b94eaf27cb4fe_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOS0xMi0xLTEtMTEwNjkz_7ecc9d1e-6dee-4464-84fb-696613c1b5b4"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i0fbb80009f17498db74b94eaf27cb4fe_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfOS0xNC0xLTEtMTEwNjkz_374b5cba-ce7e-49fc-80d8-42958d4bea0d"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfMTAtNC0xLTEtMTEwNzcx_e08b5567-84fb-4c74-80d1-6e08dacd2da5"
      unitRef="usd">145026000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfMTAtNi0xLTEtMTEwNzcx_17628419-5734-4876-ac5b-5f28d2d3e189"
      unitRef="usd">404000</us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfMTAtOC0xLTEtMTEwNzcx_145e5a28-b325-4174-bffd-5d575accbc4f"
      unitRef="usd">145430000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfMTAtMTAtMS0xLTExMDc3MQ_ca7b0427-3a0a-42b0-896c-4885245dd12a"
      unitRef="usd">124405000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfMTAtMTItMS0xLTExMDc3MQ_2953a14d-e17b-4013-8f7d-d21e8c333aad"
      unitRef="usd">375000</us-gaap:DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80Ni9mcmFnOjQxMTRiOWU5MWYxOTQ4ZDg5MzZmOTM4ZGNmMzgxMjNiL3RhYmxlOjhmNTFmMDNjMjgwMzQ0MWE4ODY5ODlmZmJlZDI2MTIwL3RhYmxlcmFuZ2U6OGY1MWYwM2MyODAzNDQxYTg4Njk4OWZmYmVkMjYxMjBfMTAtMTQtMS0xLTExMDc3MQ_db31d306-4d2b-44c9-a7c3-4eb62d14076e"
      unitRef="usd">124780000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AllowanceForCreditLossesTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80OS9mcmFnOmVlMzI3NThlNjc0ZDRhZmI4YjNkMjdmMzQ2YjZjNDgwL3RleHRyZWdpb246ZWUzMjc1OGU2NzRkNGFmYjhiM2QyN2YzNDZiNmM0ODBfNDY_3a9fc56b-853c-499c-8d9f-bc1cd558f3b1">Allowance for Credit Losses&lt;div style="margin-top:6pt;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 allowance for credit losses activity, included in accounts receivable, net, was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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;Three Months Ended&lt;br/&gt;March 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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&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;Balance, beginning of period&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;3,066&#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;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-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,249&#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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align: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 credit losses&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,206&#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,144&#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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Write-offs, net of recoveries&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,055)&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,106)&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;Balance, end of period&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;3,217&#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;4,287&#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;</us-gaap:AllowanceForCreditLossesTextBlock>
    <us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80OS9mcmFnOmVlMzI3NThlNjc0ZDRhZmI4YjNkMjdmMzQ2YjZjNDgwL3RleHRyZWdpb246ZWUzMjc1OGU2NzRkNGFmYjhiM2QyN2YzNDZiNmM0ODBfNDU_e5ea6dee-96ed-4bbf-bf10-fd770f54c8ae">&lt;div style="margin-top:6pt;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 allowance for credit losses activity, included in accounts receivable, net, was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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;Three Months Ended&lt;br/&gt;March 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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&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;Balance, beginning of period&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;3,066&#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;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-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,249&#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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align: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 credit losses&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,206&#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,144&#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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Write-offs, net of recoveries&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,055)&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,106)&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;Balance, end of period&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;3,217&#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;4,287&#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;</us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80OS9mcmFnOmVlMzI3NThlNjc0ZDRhZmI4YjNkMjdmMzQ2YjZjNDgwL3RhYmxlOjY3YWM0MmYxYThjODQ2NDE5ODg4NzkxOTBjYjkzNzM1L3RhYmxlcmFuZ2U6NjdhYzQyZjFhOGM4NDY0MTk4ODg3OTE5MGNiOTM3MzVfMi0xLTEtMS0xMDAwMzY_9dfa01ae-8452-4209-9d84-501a9c33d3b2"
      unitRef="usd">3066000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="id23181cd6ae24a028a249a4d25818065_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80OS9mcmFnOmVlMzI3NThlNjc0ZDRhZmI4YjNkMjdmMzQ2YjZjNDgwL3RhYmxlOjY3YWM0MmYxYThjODQ2NDE5ODg4NzkxOTBjYjkzNzM1L3RhYmxlcmFuZ2U6NjdhYzQyZjFhOGM4NDY0MTk4ODg3OTE5MGNiOTM3MzVfMi0zLTEtMS0xMDAwMzY_b8e83013-4c8a-4953-98ee-c2579c21b8d6"
      unitRef="usd">4249000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80OS9mcmFnOmVlMzI3NThlNjc0ZDRhZmI4YjNkMjdmMzQ2YjZjNDgwL3RhYmxlOjY3YWM0MmYxYThjODQ2NDE5ODg4NzkxOTBjYjkzNzM1L3RhYmxlcmFuZ2U6NjdhYzQyZjFhOGM4NDY0MTk4ODg3OTE5MGNiOTM3MzVfMy0xLTEtMS0xMDAwMzY_b39a0645-610b-446c-aa71-9cacbe5c3826"
      unitRef="usd">1206000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80OS9mcmFnOmVlMzI3NThlNjc0ZDRhZmI4YjNkMjdmMzQ2YjZjNDgwL3RhYmxlOjY3YWM0MmYxYThjODQ2NDE5ODg4NzkxOTBjYjkzNzM1L3RhYmxlcmFuZ2U6NjdhYzQyZjFhOGM4NDY0MTk4ODg3OTE5MGNiOTM3MzVfMy0zLTEtMS0xMDAwMzY_7a8f5c67-dbe1-45c6-a8e3-3e34113fb41c"
      unitRef="usd">1144000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80OS9mcmFnOmVlMzI3NThlNjc0ZDRhZmI4YjNkMjdmMzQ2YjZjNDgwL3RhYmxlOjY3YWM0MmYxYThjODQ2NDE5ODg4NzkxOTBjYjkzNzM1L3RhYmxlcmFuZ2U6NjdhYzQyZjFhOGM4NDY0MTk4ODg3OTE5MGNiOTM3MzVfNC0xLTEtMS0xMDAwMzY_04f760cc-51d9-40f0-81e6-c0fdc00832f3"
      unitRef="usd">1055000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80OS9mcmFnOmVlMzI3NThlNjc0ZDRhZmI4YjNkMjdmMzQ2YjZjNDgwL3RhYmxlOjY3YWM0MmYxYThjODQ2NDE5ODg4NzkxOTBjYjkzNzM1L3RhYmxlcmFuZ2U6NjdhYzQyZjFhOGM4NDY0MTk4ODg3OTE5MGNiOTM3MzVfNC0zLTEtMS0xMDAwMzY_ea76c9b9-af34-416c-b15c-5ab4a079631d"
      unitRef="usd">1106000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80OS9mcmFnOmVlMzI3NThlNjc0ZDRhZmI4YjNkMjdmMzQ2YjZjNDgwL3RhYmxlOjY3YWM0MmYxYThjODQ2NDE5ODg4NzkxOTBjYjkzNzM1L3RhYmxlcmFuZ2U6NjdhYzQyZjFhOGM4NDY0MTk4ODg3OTE5MGNiOTM3MzVfNS0xLTEtMS0xMDAwMzY_301342dc-65e5-4c36-97e6-199ef3c71df4"
      unitRef="usd">3217000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="iea65401e964c4d079f6a7764673f9d3e_I20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl80OS9mcmFnOmVlMzI3NThlNjc0ZDRhZmI4YjNkMjdmMzQ2YjZjNDgwL3RhYmxlOjY3YWM0MmYxYThjODQ2NDE5ODg4NzkxOTBjYjkzNzM1L3RhYmxlcmFuZ2U6NjdhYzQyZjFhOGM4NDY0MTk4ODg3OTE5MGNiOTM3MzVfNS0zLTEtMS0xMDAwMzY_126f34a8-44ee-4bcf-8aa9-bed8c3b02097"
      unitRef="usd">4287000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RleHRyZWdpb246NzJkYTQzMmY5MzdlNGY0YmFiM2NlY2I2YjAzMjhlYWZfNDQ_b0901c30-2558-43f5-9b51-f7dfb169c853">Property and Equipment, Net&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 consisted of the following:&lt;/span&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:72.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.557%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.475%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.478%"/&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:8pt;font-weight:700;line-height:100%"&gt;(in thousands)&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;March 31,&lt;br/&gt;2023&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;December 31, 2022&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;Internally developed software&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 #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-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;53,530&#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;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-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;49,994&#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;/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;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,601&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,310&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="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;Leasehold improvements&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;16,603&#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;16,531&#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;Office equipment and furniture&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,113&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,981&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="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 13pt;text-align:left;vertical-align: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, cost&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;111,847&#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 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;107,816&#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;/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;Less: accumulated depreciation and amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,769)&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(72,358)&lt;/span&gt;&lt;/td&gt;&lt;td style="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 13pt;text-align:left;vertical-align: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 property and equipment, 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 #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,078&#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;35,458&#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;</us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock>
    <us-gaap:PropertyPlantAndEquipmentTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RleHRyZWdpb246NzJkYTQzMmY5MzdlNGY0YmFiM2NlY2I2YjAzMjhlYWZfNDU_724edceb-5837-4a79-bd11-c40dd11e4a9a">&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 consisted of the following:&lt;/span&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:72.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.557%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.475%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.478%"/&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:8pt;font-weight:700;line-height:100%"&gt;(in thousands)&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;March 31,&lt;br/&gt;2023&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;December 31, 2022&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;Internally developed software&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 #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-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;53,530&#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;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-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;49,994&#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;/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;Computer equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,601&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,310&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="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;Leasehold improvements&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;16,603&#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;16,531&#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;Office equipment and furniture&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,113&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,981&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="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 13pt;text-align:left;vertical-align: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, cost&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;111,847&#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 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;107,816&#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;/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;Less: accumulated depreciation and amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,769)&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(72,358)&lt;/span&gt;&lt;/td&gt;&lt;td style="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 13pt;text-align:left;vertical-align: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 property and equipment, 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 #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,078&#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;35,458&#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;</us-gaap:PropertyPlantAndEquipmentTextBlock>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i5a75bb88debd45d6977bc1802be484e8_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfMS0yLTEtMS0xMDAwMzY_4a7d4cd5-ff53-4de8-b808-92f3cd2ab7ed"
      unitRef="usd">53530000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="if36c1fbf7d614e4c996719209cbd2203_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfMS00LTEtMS0xMDAwMzY_6c6b6fa3-3d5f-4cbb-b9b6-9e33d82b18e9"
      unitRef="usd">49994000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i386c273d4ce1474b8fe0376f049c4026_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfMi0yLTEtMS0xMDAwMzY_01752d8b-07a3-4cae-a585-fb272f375693"
      unitRef="usd">30601000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i044036208ec345ceb8743ee4003b4012_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfMi00LTEtMS0xMDAwMzY_c406db0e-6005-4a61-8e85-31a1658922c4"
      unitRef="usd">30310000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i7fdb034bc95a4b0392b1bc5c4e517c57_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfMy0yLTEtMS0xMDAwMzY_a29bf7de-8e18-47a8-8129-086c137a2cfc"
      unitRef="usd">16603000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i3f4882303fd44f25b34a7e397c10779f_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfMy00LTEtMS0xMDAwMzY_0ff3022a-b76a-413a-9f5b-c4195f5d5358"
      unitRef="usd">16531000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="if15e5b2451054b38881f736fe9625cc2_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfNC0yLTEtMS0xMDAwMzY_70ef1aa0-801e-47e9-8740-3bf302b75ac3"
      unitRef="usd">11113000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i534eee2a26b2444ebe09cb50ac751aff_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfNC00LTEtMS0xMDAwMzY_977a631d-62e3-4992-954a-063037ed9400"
      unitRef="usd">10981000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfNS0yLTEtMS0xMDAwMzY_7a233f02-6b0a-47da-b9ef-16aa4dbe3e7f"
      unitRef="usd">111847000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfNS00LTEtMS0xMDAwMzY_25aae3ec-ff48-47b8-82bc-684578280dbc"
      unitRef="usd">107816000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfNi0yLTEtMS0xMDAwMzY_d000e983-4ced-4b08-abbd-7c19d91c11c8"
      unitRef="usd">76769000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfNi00LTEtMS0xMDAwMzY_6adc7c3e-0edc-4e56-971a-fd95f2d48190"
      unitRef="usd">72358000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfNy0yLTEtMS0xMDAwMzY_6a4a97a8-c5bd-4963-afaa-15940ef61f24"
      unitRef="usd">35078000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81Mi9mcmFnOjcyZGE0MzJmOTM3ZTRmNGJhYjNjZWNiNmIwMzI4ZWFmL3RhYmxlOmUzZTFjNTQyOTEyNDQ3MzVhMWFjZmQ4ZDBhNzc3ZDAyL3RhYmxlcmFuZ2U6ZTNlMWM1NDI5MTI0NDczNWExYWNmZDhkMGE3NzdkMDJfNy00LTEtMS0xMDAwMzY_81c116f7-141c-4e65-8315-e6d2d00f9147"
      unitRef="usd">35458000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RleHRyZWdpb246MDdiYThiOGNiMzUyNDRhMmI1MDdlOGI5NDUwYTllNjBfOTM_3cfe281c-2ab1-47c3-9b6d-fd4ab0ab2a83">Goodwill and Intangible Assets, Net&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 activity in goodwill was as follows:&lt;/span&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.718%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.082%"/&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;/tr&gt;&lt;tr&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;Three Months Ended&lt;br/&gt;March 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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&lt;/span&gt;&lt;/td&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;Balance, beginning of period&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;197,284&#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="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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign currency translation&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;(71)&lt;/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="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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Remeasurement from provisional purchase accounting amount&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,788&#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="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;Balance, end of period&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;199,001&#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="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Intangible Assets&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:30.566%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.086%"/&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="27" 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;March 31, 2023&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:700;line-height:100%"&gt;($ in thousands)&lt;/span&gt;&lt;/td&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;Gross&lt;br/&gt;Carrying&lt;br/&gt;Amount&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;Accumulated &lt;br/&gt;Amortization &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;Foreign&lt;br/&gt;Currency &lt;br/&gt;Translation&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;Net&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;Weighted Average Remaining Amortization Period&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;Subscriber relationships&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;79,385&#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;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-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;(24,205)&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;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-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;29&#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;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-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;55,209&#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 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;6.6 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;Acquired technology&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;40,612&#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,292)&lt;/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;7&#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,327&#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: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;5.5 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&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;119,997&#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;(35,497)&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;36&#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;84,536&#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="background-color:#cceeff;border-bottom:3pt double #000;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;6.2 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:30.566%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.086%"/&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="27" 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:700;line-height:100%"&gt;($ in thousands)&lt;/span&gt;&lt;/td&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;Gross&lt;br/&gt;Carrying&lt;br/&gt;Amount&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;Accumulated &lt;br/&gt;Amortization &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;Foreign&lt;br/&gt;Currency &lt;br/&gt;Translation&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;Net&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;Weighted Average Remaining Amortization Period&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;Subscriber relationships&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;80,101&#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;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-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,255)&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;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-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;(171)&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;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-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,675&#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 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;6.8 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;Acquired technology&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;40,610&#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,934)&lt;/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&#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;30,677&#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: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;5.7 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&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;120,711&#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;(32,189)&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;(170)&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;88,352&#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="background-color:#cceeff;border-bottom:3pt double #000;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;6.4 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:3pt;font-weight:700;line-height:120%"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 estimated future annual amortization expense related to intangible assets is as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:85.718%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.082%"/&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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="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:#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;Remainder of 2023&lt;/span&gt;&lt;/td&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;11,450&#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="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,102&#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="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,964&#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="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;12,960&#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="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,497&#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="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,563&#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 future amortization&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;84,536&#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:GoodwillAndIntangibleAssetsDisclosureTextBlock>
    <us-gaap:ScheduleOfGoodwillTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RleHRyZWdpb246MDdiYThiOGNiMzUyNDRhMmI1MDdlOGI5NDUwYTllNjBfOTU_2ec5f1c0-4e71-4bd8-91e3-99d56fce34f0">&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 activity in goodwill was as follows:&lt;/span&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.718%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.082%"/&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;/tr&gt;&lt;tr&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;Three Months Ended&lt;br/&gt;March 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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&lt;/span&gt;&lt;/td&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;Balance, beginning of period&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;197,284&#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="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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign currency translation&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;(71)&lt;/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="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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Remeasurement from provisional purchase accounting amount&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,788&#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="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;Balance, end of period&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;199,001&#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="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfGoodwillTextBlock>
    <us-gaap:Goodwill
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjI0ODYzZDgzODI2YjQxNTM5MmY0YmYwMjg3YmE1OWJlL3RhYmxlcmFuZ2U6MjQ4NjNkODM4MjZiNDE1MzkyZjRiZjAyODdiYTU5YmVfMi0xLTEtMS0xMDAwMzY_9cc2c360-6549-4c41-b1ae-b773f65badcb"
      unitRef="usd">197284000</us-gaap:Goodwill>
    <us-gaap:GoodwillForeignCurrencyTranslationGainLoss
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjI0ODYzZDgzODI2YjQxNTM5MmY0YmYwMjg3YmE1OWJlL3RhYmxlcmFuZ2U6MjQ4NjNkODM4MjZiNDE1MzkyZjRiZjAyODdiYTU5YmVfMy0xLTEtMS0xMjQ2OTg_d116175d-3147-4e3a-bea9-15d2b0dd38d6"
      unitRef="usd">-71000</us-gaap:GoodwillForeignCurrencyTranslationGainLoss>
    <us-gaap:GoodwillPurchaseAccountingAdjustments
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjI0ODYzZDgzODI2YjQxNTM5MmY0YmYwMjg3YmE1OWJlL3RhYmxlcmFuZ2U6MjQ4NjNkODM4MjZiNDE1MzkyZjRiZjAyODdiYTU5YmVfNC0xLTEtMS0xMjQ2ODk_3d327d8c-72be-4128-ad21-90f048612c79"
      unitRef="usd">1788000</us-gaap:GoodwillPurchaseAccountingAdjustments>
    <us-gaap:Goodwill
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjI0ODYzZDgzODI2YjQxNTM5MmY0YmYwMjg3YmE1OWJlL3RhYmxlcmFuZ2U6MjQ4NjNkODM4MjZiNDE1MzkyZjRiZjAyODdiYTU5YmVfNi0xLTEtMS0xMDAwMzY_1f72a20f-c565-4669-ba3d-9141e2a3b168"
      unitRef="usd">199001000</us-gaap:Goodwill>
    <us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RleHRyZWdpb246MDdiYThiOGNiMzUyNDRhMmI1MDdlOGI5NDUwYTllNjBfOTc_c55ed6b4-62d9-4a0c-89c0-bdeb5618bc0c">&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Intangible Assets&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:30.566%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.086%"/&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="27" 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;March 31, 2023&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:700;line-height:100%"&gt;($ in thousands)&lt;/span&gt;&lt;/td&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;Gross&lt;br/&gt;Carrying&lt;br/&gt;Amount&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;Accumulated &lt;br/&gt;Amortization &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;Foreign&lt;br/&gt;Currency &lt;br/&gt;Translation&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;Net&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;Weighted Average Remaining Amortization Period&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;Subscriber relationships&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;79,385&#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;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-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;(24,205)&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;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-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;29&#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;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-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;55,209&#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 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;6.6 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;Acquired technology&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;40,612&#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,292)&lt;/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;7&#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,327&#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: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;5.5 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&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;119,997&#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;(35,497)&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;36&#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;84,536&#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="background-color:#cceeff;border-bottom:3pt double #000;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;6.2 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:30.566%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.086%"/&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="27" 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:700;line-height:100%"&gt;($ in thousands)&lt;/span&gt;&lt;/td&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;Gross&lt;br/&gt;Carrying&lt;br/&gt;Amount&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;Accumulated &lt;br/&gt;Amortization &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;Foreign&lt;br/&gt;Currency &lt;br/&gt;Translation&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;Net&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;Weighted Average Remaining Amortization Period&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;Subscriber relationships&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;80,101&#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;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-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,255)&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;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-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;(171)&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;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-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,675&#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 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;6.8 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;Acquired technology&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;40,610&#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,934)&lt;/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&#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;30,677&#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: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;5.7 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&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;120,711&#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;(32,189)&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;(170)&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;88,352&#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="background-color:#cceeff;border-bottom:3pt double #000;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;6.4 years&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="idfbc23a59140439a8615288bcb3f78ef_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfMi0xLTEtMS0xMDAwMzY_dae7a429-1876-4c0a-bf9d-61f603d77656"
      unitRef="usd">79385000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="idfbc23a59140439a8615288bcb3f78ef_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfMi0zLTEtMS0xMDAwMzY_db9b7389-36fb-48bd-98d6-cf753f01aa9e"
      unitRef="usd">24205000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
      contextRef="idfbc23a59140439a8615288bcb3f78ef_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfMi01LTEtMS0xMDAwMzY_9be55115-a54a-48d2-8135-96156a6dc5c1"
      unitRef="usd">29000</spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="idfbc23a59140439a8615288bcb3f78ef_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfMi03LTEtMS0xMDAwMzY_00979246-b73e-4fa7-a57d-064651b76513"
      unitRef="usd">55209000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="ic91aaccdeb714bfc8f0dce202e196a66_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfMi05LTEtMS0xMDAwMzY_3c7b3413-4db9-4c2c-86cb-ec5b12db229d">P6Y7M6D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i42612c0ae9fd49b38cbc84eb2d0083e6_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfMy0xLTEtMS0xMDAwMzY_542c1590-cb81-43aa-aa8e-970b1d3fe615"
      unitRef="usd">40612000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i42612c0ae9fd49b38cbc84eb2d0083e6_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfMy0zLTEtMS0xMDAwMzY_349025e5-858d-46b8-ae84-689e5d2f3dce"
      unitRef="usd">11292000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
      contextRef="i42612c0ae9fd49b38cbc84eb2d0083e6_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfMy01LTEtMS0xMDAwMzY_285d46a3-6aa5-4b63-a8a0-0bbed676981b"
      unitRef="usd">7000</spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i42612c0ae9fd49b38cbc84eb2d0083e6_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfMy03LTEtMS0xMDAwMzY_37eb3f48-5018-4967-a714-509deee21d4d"
      unitRef="usd">29327000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="i4e6aa02ec2b74ba69310d3ad612c9cda_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfMy05LTEtMS0xMDAwMzY_03b20d55-148e-4051-9712-37701ec0c082">P5Y6M</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfNC0xLTEtMS0xMDAwMzY_1bfa3fe7-78b5-470e-9bb6-3cfc28376972"
      unitRef="usd">119997000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfNC0zLTEtMS0xMDAwMzY_95bf3e0d-d01e-4ec9-a1b9-e2071d9dbb45"
      unitRef="usd">35497000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfNC01LTEtMS0xMDAwMzY_d5b569d8-db89-4ee8-8e68-c8940b75f3c2"
      unitRef="usd">36000</spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfNC03LTEtMS0xMDAwMzY_cdfa6fb1-7902-479d-8aa3-168da9267ef4"
      unitRef="usd">84536000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjVmYmZjMzgyODYzYTRlYzM4OWNiZjhmM2NiZjk5N2FiL3RhYmxlcmFuZ2U6NWZiZmMzODI4NjNhNGVjMzg5Y2JmOGYzY2JmOTk3YWJfNC05LTEtMS0xMDAwMzY_f7359236-141b-4644-88e7-28118c157fc2">P6Y2M12D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="iaf6b0a0eb5b3448ebe65047605d7d317_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfMi0xLTEtMS0xMDAwMzY_97866b96-5d8f-472b-b98e-4e91dbf53cb3"
      unitRef="usd">80101000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="iaf6b0a0eb5b3448ebe65047605d7d317_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfMi0zLTEtMS0xMDAwMzY_197df13c-054f-467c-89ca-05be63c68669"
      unitRef="usd">22255000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
      contextRef="iaf6b0a0eb5b3448ebe65047605d7d317_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfMi01LTEtMS0xMDAwMzY_e7897c9f-dbcd-49ea-8168-c8e7a2c9b9f4"
      unitRef="usd">-171000</spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="iaf6b0a0eb5b3448ebe65047605d7d317_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfMi03LTEtMS0xMDAwMzY_7aeae2a4-821e-432c-9e03-7b4e48cb52f6"
      unitRef="usd">57675000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="ic65167d9de1f4e50805056a53d766244_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfMi05LTEtMS0xMDAwMzY_93eef809-95d0-45db-92ef-ebd47e80b1cc">P6Y9M18D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ibef612a6a2494f51809d078779233bed_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfMy0xLTEtMS0xMDAwMzY_68185e2c-addf-4127-b3e5-70b8e788a704"
      unitRef="usd">40610000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ibef612a6a2494f51809d078779233bed_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfMy0zLTEtMS0xMDAwMzY_f07f919c-5f88-429e-9c2a-466f7d22cd3f"
      unitRef="usd">9934000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
      contextRef="ibef612a6a2494f51809d078779233bed_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfMy01LTEtMS0xMDAwMzY_e5aba69f-475c-4efe-8f69-61147c90ed6b"
      unitRef="usd">1000</spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ibef612a6a2494f51809d078779233bed_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfMy03LTEtMS0xMDAwMzY_f4cc197c-b8a7-43c0-b97b-502dfe22e495"
      unitRef="usd">30677000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="i2139ddbdb599478c96f7dbd3221493e7_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfMy05LTEtMS0xMDAwMzY_c8f65ecb-7f0a-4bfa-b8cb-146c111aac98">P5Y8M12D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfNC0xLTEtMS0xMDAwMzY_8fd22181-bee8-41b6-983b-426a0fd8ae35"
      unitRef="usd">120711000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfNC0zLTEtMS0xMDAwMzY_fd48e38e-f6b8-4b7e-b464-196cebf97e2c"
      unitRef="usd">32189000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfNC01LTEtMS0xMDAwMzY_ab42541b-fe10-4ebd-9a98-6ba56c3ac514"
      unitRef="usd">-170000</spsc:FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfNC03LTEtMS0xMDAwMzY_4850f782-b201-40d8-8ebb-c0eb1ca58c03"
      unitRef="usd">88352000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="ie8eb7dd105294462b8565005c929635e_D20220101-20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOmIwNTgxOWI5OGNmMjQ1MzM5N2M3MjRlMDdjMjhkODRlL3RhYmxlcmFuZ2U6YjA1ODE5Yjk4Y2YyNDUzMzk3YzcyNGUwN2MyOGQ4NGVfNC05LTEtMS0xMDAwMzY_eb5b27ae-bff1-4a9d-b157-3ac943516e36">P6Y4M24D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RleHRyZWdpb246MDdiYThiOGNiMzUyNDRhMmI1MDdlOGI5NDUwYTllNjBfOTk_bd744743-e41a-4221-9160-d7807d4a3a53">&lt;div style="margin-top:6pt;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 estimated future annual amortization expense related to intangible assets is as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:85.718%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.082%"/&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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="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:#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;Remainder of 2023&lt;/span&gt;&lt;/td&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;11,450&#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="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,102&#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="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,964&#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="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;12,960&#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="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,497&#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="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,563&#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 future amortization&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;84,536&#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:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjIyMTQxY2MzNDVhYTQ5ZmZiMThiMWZmNjI4NmE4NGE2L3RhYmxlcmFuZ2U6MjIxNDFjYzM0NWFhNDlmZmIxOGIxZmY2Mjg2YTg0YTZfMS0xLTEtMS0xMDAwMzY_47153add-d1fa-44aa-a0be-e310595d7b88"
      unitRef="usd">11450000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjIyMTQxY2MzNDVhYTQ5ZmZiMThiMWZmNjI4NmE4NGE2L3RhYmxlcmFuZ2U6MjIxNDFjYzM0NWFhNDlmZmIxOGIxZmY2Mjg2YTg0YTZfMi0xLTEtMS0xMDAwMzY_1bc57c40-a0bd-4866-8e4c-9cde88658429"
      unitRef="usd">14102000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjIyMTQxY2MzNDVhYTQ5ZmZiMThiMWZmNjI4NmE4NGE2L3RhYmxlcmFuZ2U6MjIxNDFjYzM0NWFhNDlmZmIxOGIxZmY2Mjg2YTg0YTZfMy0xLTEtMS0xMDAwMzY_181983fc-f174-4bd5-a4fb-6e2f5b26f21a"
      unitRef="usd">13964000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjIyMTQxY2MzNDVhYTQ5ZmZiMThiMWZmNjI4NmE4NGE2L3RhYmxlcmFuZ2U6MjIxNDFjYzM0NWFhNDlmZmIxOGIxZmY2Mjg2YTg0YTZfNC0xLTEtMS0xMDAwMzY_b3e947ca-4a1a-499c-90c0-663a38d45156"
      unitRef="usd">12960000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjIyMTQxY2MzNDVhYTQ5ZmZiMThiMWZmNjI4NmE4NGE2L3RhYmxlcmFuZ2U6MjIxNDFjYzM0NWFhNDlmZmIxOGIxZmY2Mjg2YTg0YTZfNS0xLTEtMS0xMDAwMzY_1cdcc9ea-32a9-40fc-8108-14c6666b31c7"
      unitRef="usd">12497000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour>
    <spsc:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFour
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjIyMTQxY2MzNDVhYTQ5ZmZiMThiMWZmNjI4NmE4NGE2L3RhYmxlcmFuZ2U6MjIxNDFjYzM0NWFhNDlmZmIxOGIxZmY2Mjg2YTg0YTZfNi0xLTEtMS0xMDAwMzY_38a73506-fbde-4181-87e8-7adefebc2e56"
      unitRef="usd">19563000</spsc:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFour>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81NS9mcmFnOjA3YmE4YjhjYjM1MjQ0YTJiNTA3ZThiOTQ1MGE5ZTYwL3RhYmxlOjIyMTQxY2MzNDVhYTQ5ZmZiMThiMWZmNjI4NmE4NGE2L3RhYmxlcmFuZ2U6MjIxNDFjYzM0NWFhNDlmZmIxOGIxZmY2Mjg2YTg0YTZfNy0xLTEtMS0xMDAwMzY_9591e97a-ad15-4b63-b7e5-d27b5ce7dc29"
      unitRef="usd">84536000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RleHRyZWdpb246ZmUyNjE3YzA3NjllNDYzM2EyMWE5ZDQ4ZjUwMzg2ZjFfMzYw_7c133cc8-1163-482d-b290-e273b0a8346c">Commitments and Contingencies&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;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-top:6pt;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 were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.181%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.430%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.325%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.417%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.328%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Operating lease cost&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;798&#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;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-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;759&#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="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;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;928&#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;793&#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="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: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;1,726&#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;1,552&#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="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;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Supplemental cash flow information related to leases was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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;Three Months Ended&lt;br/&gt;March 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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&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 paid for amounts included in the measurement of lease liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;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;border-top:1pt solid #000;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 2px 10pt;text-align:left;vertical-align: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 cash flows from operating leases&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,247&#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,095&#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;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Supplemental balance sheet information related to operating leases was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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: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;March 31,&lt;br/&gt;2023&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;December 31, 2022&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 remaining lease term&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;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.8 years&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:right;vertical-align: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 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;Weighted-average discount rate&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;4.0&#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;span style="color:#000000;font-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:#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.0&#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;span style="color:#000000;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="margin-top:6pt;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 March&#160;31, 2023, our future minimum payments under operating leases were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:85.718%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.082%"/&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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="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;Remainder of 2023&lt;/span&gt;&lt;/td&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;3,847&#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="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,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;2025&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,081&#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="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,763&#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="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,266&#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;/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 future gross payments&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;17,428&#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;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;(1,313)&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 operating lease liabilities&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;16,115&#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-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Purchase Commitments&lt;/span&gt;&lt;/div&gt;We have entered into separate noncancelable agreements with computing infrastructure, customer relationship management, and performance and security data analytics vendors for services through 2025. At March&#160;31, 2023, the total remaining purchase commitments were $4.3 million</us-gaap:CommitmentsAndContingenciesDisclosureTextBlock>
    <us-gaap:LeaseCostTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RleHRyZWdpb246ZmUyNjE3YzA3NjllNDYzM2EyMWE5ZDQ4ZjUwMzg2ZjFfMzYx_5bb3e00c-145e-4fc8-8b41-7f3dce9de7ac">&lt;div style="margin-top:6pt;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 were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.181%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.430%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.325%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.417%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.328%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Operating lease cost&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;798&#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;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-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;759&#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="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;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;928&#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;793&#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="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: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;1,726&#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;1,552&#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="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;/table&gt;&lt;/div&gt;</us-gaap:LeaseCostTableTextBlock>
    <us-gaap:OperatingLeaseCost
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOmM3Yzc5NjFiNWNlODQwMDA5ZGI5OWZjNjI4Mjk2NTM1L3RhYmxlcmFuZ2U6YzdjNzk2MWI1Y2U4NDAwMDlkYjk5ZmM2MjgyOTY1MzVfMi0xLTEtMS0xMDAwMzY_2ae07e55-fdf8-4924-8aa6-d62563b52033"
      unitRef="usd">798000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOmM3Yzc5NjFiNWNlODQwMDA5ZGI5OWZjNjI4Mjk2NTM1L3RhYmxlcmFuZ2U6YzdjNzk2MWI1Y2U4NDAwMDlkYjk5ZmM2MjgyOTY1MzVfMi0zLTEtMS0xMDAwMzY_5792d574-1ab6-4dd1-a683-e56de4f69cf8"
      unitRef="usd">759000</us-gaap:OperatingLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOmM3Yzc5NjFiNWNlODQwMDA5ZGI5OWZjNjI4Mjk2NTM1L3RhYmxlcmFuZ2U6YzdjNzk2MWI1Y2U4NDAwMDlkYjk5ZmM2MjgyOTY1MzVfMy0xLTEtMS0xMDAwMzY_3ad2a0c0-24b2-4d8c-a897-ddf633f52162"
      unitRef="usd">928000</us-gaap:VariableLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOmM3Yzc5NjFiNWNlODQwMDA5ZGI5OWZjNjI4Mjk2NTM1L3RhYmxlcmFuZ2U6YzdjNzk2MWI1Y2U4NDAwMDlkYjk5ZmM2MjgyOTY1MzVfMy0zLTEtMS0xMDAwMzY_36924edb-edfc-4ec4-ba2f-850dc3235f97"
      unitRef="usd">793000</us-gaap:VariableLeaseCost>
    <us-gaap:LeaseCost
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOmM3Yzc5NjFiNWNlODQwMDA5ZGI5OWZjNjI4Mjk2NTM1L3RhYmxlcmFuZ2U6YzdjNzk2MWI1Y2U4NDAwMDlkYjk5ZmM2MjgyOTY1MzVfNC0xLTEtMS0xMDAwMzY_a42fa1e6-00d6-49be-92c1-49439af0c6b3"
      unitRef="usd">1726000</us-gaap:LeaseCost>
    <us-gaap:LeaseCost
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOmM3Yzc5NjFiNWNlODQwMDA5ZGI5OWZjNjI4Mjk2NTM1L3RhYmxlcmFuZ2U6YzdjNzk2MWI1Y2U4NDAwMDlkYjk5ZmM2MjgyOTY1MzVfNC0zLTEtMS0xMDAwMzY_59bc3214-ebb6-47b0-b121-7146a70ea491"
      unitRef="usd">1552000</us-gaap:LeaseCost>
    <spsc:ScheduleOfSupplementalCashFlowInformationRelatedToLeasesTableTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RleHRyZWdpb246ZmUyNjE3YzA3NjllNDYzM2EyMWE5ZDQ4ZjUwMzg2ZjFfMzU2_e9a88dde-6a9e-462c-a9a4-8d71ee07c5f5">&lt;div style="margin-top:6pt;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;Supplemental cash flow information related to leases was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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;Three Months Ended&lt;br/&gt;March 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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&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 paid for amounts included in the measurement of lease liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;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;border-top:1pt solid #000;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 2px 10pt;text-align:left;vertical-align: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 cash flows from operating leases&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,247&#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,095&#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;/table&gt;&lt;/div&gt;</spsc:ScheduleOfSupplementalCashFlowInformationRelatedToLeasesTableTableTextBlock>
    <us-gaap:OperatingLeasePayments
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOjRkMDZiNWI3NDlkMzQ3MzZiMDk3YzUzZTlhNzM2OTQxL3RhYmxlcmFuZ2U6NGQwNmI1Yjc0OWQzNDczNmIwOTdjNTNlOWE3MzY5NDFfMy0xLTEtMS0xMDAwMzY_210b8291-bd41-44ff-9504-046508a43553"
      unitRef="usd">1247000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOjRkMDZiNWI3NDlkMzQ3MzZiMDk3YzUzZTlhNzM2OTQxL3RhYmxlcmFuZ2U6NGQwNmI1Yjc0OWQzNDczNmIwOTdjNTNlOWE3MzY5NDFfMy0zLTEtMS0xMDAwMzY_43ba54f7-a456-4f9b-bf43-c7079c0ff4f6"
      unitRef="usd">1095000</us-gaap:OperatingLeasePayments>
    <spsc:ScheduleOfSupplementalBalanceSheetInformationRelatedToLeasesTableTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RleHRyZWdpb246ZmUyNjE3YzA3NjllNDYzM2EyMWE5ZDQ4ZjUwMzg2ZjFfMzYz_f4f54a94-b8da-4479-9e05-889318875865">&lt;div style="margin-top:6pt;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;Supplemental balance sheet information related to operating leases was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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: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;March 31,&lt;br/&gt;2023&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;December 31, 2022&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 remaining lease term&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;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.8 years&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:right;vertical-align: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 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;Weighted-average discount rate&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;4.0&#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;span style="color:#000000;font-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:#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.0&#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;span style="color:#000000;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;</spsc:ScheduleOfSupplementalBalanceSheetInformationRelatedToLeasesTableTableTextBlock>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOmZlNjI4NGYwNjViYzQ3NWFhNTg4ZjEyZGJkNTNmYmEwL3RhYmxlcmFuZ2U6ZmU2Mjg0ZjA2NWJjNDc1YWE1ODhmMTJkYmQ1M2ZiYTBfMS0xLTEtMS0xMDAwMzY_8bd407c5-629f-4e05-9f2e-f8a0998bd5d3">P3Y9M18D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOmZlNjI4NGYwNjViYzQ3NWFhNTg4ZjEyZGJkNTNmYmEwL3RhYmxlcmFuZ2U6ZmU2Mjg0ZjA2NWJjNDc1YWE1ODhmMTJkYmQ1M2ZiYTBfMS0zLTEtMS0xMDAwMzY_f7953570-ef1c-46a2-9781-0c18170c6426">P3Y10M24D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOmZlNjI4NGYwNjViYzQ3NWFhNTg4ZjEyZGJkNTNmYmEwL3RhYmxlcmFuZ2U6ZmU2Mjg0ZjA2NWJjNDc1YWE1ODhmMTJkYmQ1M2ZiYTBfMi0xLTEtMS0xMDAwMzY_e09f059a-f5d1-4524-bf27-90423095e3b0"
      unitRef="number">0.040</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOmZlNjI4NGYwNjViYzQ3NWFhNTg4ZjEyZGJkNTNmYmEwL3RhYmxlcmFuZ2U6ZmU2Mjg0ZjA2NWJjNDc1YWE1ODhmMTJkYmQ1M2ZiYTBfMi0zLTEtMS0xMDAwMzY_ee7d3249-6422-4bec-aa98-3624298b5976"
      unitRef="number">0.040</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RleHRyZWdpb246ZmUyNjE3YzA3NjllNDYzM2EyMWE5ZDQ4ZjUwMzg2ZjFfMzY0_448a9080-d224-4057-bba6-79fd7931e7e7">&lt;div style="margin-top:6pt;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 March&#160;31, 2023, our future minimum payments under operating leases were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:85.718%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.082%"/&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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="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;Remainder of 2023&lt;/span&gt;&lt;/td&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;3,847&#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="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,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;2025&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,081&#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="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,763&#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="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,266&#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;/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 future gross payments&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;17,428&#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;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;(1,313)&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 operating lease liabilities&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;16,115&#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;</us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOjI0NzRhOTQ3ZjI0MDRiNDZhY2Y1MmVkNzk0ZDljN2EwL3RhYmxlcmFuZ2U6MjQ3NGE5NDdmMjQwNGI0NmFjZjUyZWQ3OTRkOWM3YTBfMS0xLTEtMS0xMDAwMzY_529b0b47-11cf-4cfa-8870-7291baff8245"
      unitRef="usd">3847000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOjI0NzRhOTQ3ZjI0MDRiNDZhY2Y1MmVkNzk0ZDljN2EwL3RhYmxlcmFuZ2U6MjQ3NGE5NDdmMjQwNGI0NmFjZjUyZWQ3OTRkOWM3YTBfMi0xLTEtMS0xMDAwMzY_75977952-da9a-49f9-9a07-6170557b741f"
      unitRef="usd">4471000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOjI0NzRhOTQ3ZjI0MDRiNDZhY2Y1MmVkNzk0ZDljN2EwL3RhYmxlcmFuZ2U6MjQ3NGE5NDdmMjQwNGI0NmFjZjUyZWQ3OTRkOWM3YTBfMy0xLTEtMS0xMDAwMzY_6fb92a05-04d6-452c-8528-6620fd0e0a9f"
      unitRef="usd">4081000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOjI0NzRhOTQ3ZjI0MDRiNDZhY2Y1MmVkNzk0ZDljN2EwL3RhYmxlcmFuZ2U6MjQ3NGE5NDdmMjQwNGI0NmFjZjUyZWQ3OTRkOWM3YTBfNC0xLTEtMS0xMDAwMzY_9879c51e-3b4f-48de-87ac-817085ec7b5b"
      unitRef="usd">3763000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOjI0NzRhOTQ3ZjI0MDRiNDZhY2Y1MmVkNzk0ZDljN2EwL3RhYmxlcmFuZ2U6MjQ3NGE5NDdmMjQwNGI0NmFjZjUyZWQ3OTRkOWM3YTBfNS0xLTEtMS0xMDAwMzY_4f7c2d2c-51bf-47be-ba2d-e9551176cda2"
      unitRef="usd">1266000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOjI0NzRhOTQ3ZjI0MDRiNDZhY2Y1MmVkNzk0ZDljN2EwL3RhYmxlcmFuZ2U6MjQ3NGE5NDdmMjQwNGI0NmFjZjUyZWQ3OTRkOWM3YTBfNy0xLTEtMS0xMDAwMzY_91a4c43c-e90d-481e-8e08-f504e53f0bac"
      unitRef="usd">17428000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOjI0NzRhOTQ3ZjI0MDRiNDZhY2Y1MmVkNzk0ZDljN2EwL3RhYmxlcmFuZ2U6MjQ3NGE5NDdmMjQwNGI0NmFjZjUyZWQ3OTRkOWM3YTBfOC0xLTEtMS0xMDAwMzY_ae6693c5-fd10-4c27-a1b5-71a29c29f82b"
      unitRef="usd">1313000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:OperatingLeaseLiability
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RhYmxlOjI0NzRhOTQ3ZjI0MDRiNDZhY2Y1MmVkNzk0ZDljN2EwL3RhYmxlcmFuZ2U6MjQ3NGE5NDdmMjQwNGI0NmFjZjUyZWQ3OTRkOWM3YTBfOS0xLTEtMS0xMDAwMzY_36f59018-2f93-4cdf-9e6a-5731b73c8b05"
      unitRef="usd">16115000</us-gaap:OperatingLeaseLiability>
    <us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl81OC9mcmFnOmZlMjYxN2MwNzY5ZTQ2MzNhMjFhOWQ0OGY1MDM4NmYxL3RleHRyZWdpb246ZmUyNjE3YzA3NjllNDYzM2EyMWE5ZDQ4ZjUwMzg2ZjFfMzUx_f3c7ea4c-a8be-413e-a360-902c06fe9af0"
      unitRef="usd">4300000</us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted>
    <us-gaap:StockholdersEquityNoteDisclosureTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RleHRyZWdpb246YzBmOTZkNWEwZjM4NDA0N2I0NGVmMWJmMjY2YTA5MTRfOTQ_4ce7b193-a612-44d2-bd86-af5f7a46f326">Stockholders&#x2019; Equity&lt;div style="margin-top:12pt"&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&lt;/span&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt; Repurchase Programs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-indent:36pt"&gt;&lt;span style="color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our board of directors has authorized multiple non-concurrent programs to repurchase our common stock. Details of the programs and activity thereunder through &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;March&#160;31, 2023 were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&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:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.293%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.142%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.839%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.839%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.839%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;Effective Date&lt;/span&gt;&lt;/td&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;Expiration Date&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;Share Value Authorized for Repurchase&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;Share Value Repurchased&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;Unused &amp;amp; Expired Share Repurchase Value&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;Share Value Available for Future Repurchase&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;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;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;2021 Program&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;November 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;August 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;border-top:1pt solid #000;padding:2px 7pt 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,000&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;49,992&#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:middle"/&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:middle"&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;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;N/A&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:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022 Program&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;August 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;July 2024&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 7pt 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,000&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;N/A&lt;/span&gt;&lt;/td&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New 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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;47,008&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-indent:36pt"&gt;&lt;span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The &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;share&lt;/span&gt;&lt;span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;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;repurchase activity by period was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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.354%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.900%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.840%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands, except shares and per share amounts)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;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;2023&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: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="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;Number of shares repurchased&lt;/span&gt;&lt;/td&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;&#x2014;&#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 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;121,544&#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="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;Shares repurchased cost&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;15,226&#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="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;Average price per repurchased share&lt;/span&gt;&lt;/td&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;&#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 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;125.27&#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="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;/table&gt;&lt;/div&gt;</us-gaap:StockholdersEquityNoteDisclosureTextBlock>
    <us-gaap:ScheduleOfTreasuryStockByClassTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RleHRyZWdpb246YzBmOTZkNWEwZjM4NDA0N2I0NGVmMWJmMjY2YTA5MTRfOTY_30712b25-a540-4a53-a4b8-6a05ff21fa23">&lt;div style="margin-top:6pt;text-indent:36pt"&gt;&lt;span style="color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Our board of directors has authorized multiple non-concurrent programs to repurchase our common stock. Details of the programs and activity thereunder through &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;March&#160;31, 2023 were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&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:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.293%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.142%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.839%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.839%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.839%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.843%"/&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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;Effective Date&lt;/span&gt;&lt;/td&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;Expiration Date&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;Share Value Authorized for Repurchase&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;Share Value Repurchased&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;Unused &amp;amp; Expired Share Repurchase Value&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;Share Value Available for Future Repurchase&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;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;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;2021 Program&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;November 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;August 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;border-top:1pt solid #000;padding:2px 7pt 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,000&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;49,992&#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:middle"/&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:middle"&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;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;N/A&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:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022 Program&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;August 2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;July 2024&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 7pt 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,000&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;N/A&lt;/span&gt;&lt;/td&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New 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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;47,008&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-indent:36pt"&gt;&lt;span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The &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;share&lt;/span&gt;&lt;span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;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;repurchase activity by period was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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.354%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.900%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.840%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands, except shares and per share amounts)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000;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;2023&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: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="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;Number of shares repurchased&lt;/span&gt;&lt;/td&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;&#x2014;&#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 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;121,544&#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="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;Shares repurchased cost&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;15,226&#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="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;Average price per repurchased share&lt;/span&gt;&lt;/td&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;&#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 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;125.27&#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="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;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfTreasuryStockByClassTextBlock>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="ic66b2fe6cc7a4bf9b038a88eb9c4f953_I20230331"
      decimals="-7"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjJhMzUwYjVhM2JlMTQ0YzBiOTVhMjQzZGY1NTYzMDkwL3RhYmxlcmFuZ2U6MmEzNTBiNWEzYmUxNDRjMGI5NWEyNDNkZjU1NjMwOTBfMi00LTEtMS0xMDAwMzY_2d65ce82-bfba-49d9-9b9d-490a493b2b42"
      unitRef="usd">50000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:TreasuryStockCommonValue
      contextRef="ic66b2fe6cc7a4bf9b038a88eb9c4f953_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjJhMzUwYjVhM2JlMTQ0YzBiOTVhMjQzZGY1NTYzMDkwL3RhYmxlcmFuZ2U6MmEzNTBiNWEzYmUxNDRjMGI5NWEyNDNkZjU1NjMwOTBfMi02LTEtMS0xMDAwMzY_e00611f6-e028-4cfd-801c-0d7803b4e415"
      unitRef="usd">49992000</us-gaap:TreasuryStockCommonValue>
    <spsc:TreasuryStockUnusedAndExpiredRepurchaseValue
      contextRef="i3cf98a1bfcce425bb63813ffc2c3e964_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjJhMzUwYjVhM2JlMTQ0YzBiOTVhMjQzZGY1NTYzMDkwL3RhYmxlcmFuZ2U6MmEzNTBiNWEzYmUxNDRjMGI5NWEyNDNkZjU1NjMwOTBfMi04LTEtMS0xMDAwMzY_6fea4c65-5240-4f48-991a-59a5f3d02093"
      unitRef="usd">8000</spsc:TreasuryStockUnusedAndExpiredRepurchaseValue>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="i0b6acb14977e4bbebf8dc1ae4945d040_I20230331"
      decimals="-7"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjJhMzUwYjVhM2JlMTQ0YzBiOTVhMjQzZGY1NTYzMDkwL3RhYmxlcmFuZ2U6MmEzNTBiNWEzYmUxNDRjMGI5NWEyNDNkZjU1NjMwOTBfMy00LTEtMS0xMDAwMzY_1020067b-a566-42a7-84e3-c931906933f8"
      unitRef="usd">50000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:TreasuryStockCommonValue
      contextRef="i0b6acb14977e4bbebf8dc1ae4945d040_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjJhMzUwYjVhM2JlMTQ0YzBiOTVhMjQzZGY1NTYzMDkwL3RhYmxlcmFuZ2U6MmEzNTBiNWEzYmUxNDRjMGI5NWEyNDNkZjU1NjMwOTBfMy02LTEtMS0xMDAwMzY_cb49419f-2be0-4522-b2a5-57b719fa8342"
      unitRef="usd">2992000</us-gaap:TreasuryStockCommonValue>
    <us-gaap:StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1
      contextRef="i0b6acb14977e4bbebf8dc1ae4945d040_I20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjJhMzUwYjVhM2JlMTQ0YzBiOTVhMjQzZGY1NTYzMDkwL3RhYmxlcmFuZ2U6MmEzNTBiNWEzYmUxNDRjMGI5NWEyNDNkZjU1NjMwOTBfMy0xMC0xLTEtMTAwMDM2_ce50e154-885e-4301-93b9-73a29e25219b"
      unitRef="usd">47008000</us-gaap:StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1>
    <us-gaap:TreasuryStockSharesAcquired
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjA3ZjM2MjA4MGM2ZTRjNGM4ODllMDA2NzRiMDAxNWIwL3RhYmxlcmFuZ2U6MDdmMzYyMDgwYzZlNGM0Yzg4OWUwMDY3NGIwMDE1YjBfMi0xLTEtMS0xMDAwMzY_df5c08e1-cb7a-46e5-b426-47f5cba7067b"
      unitRef="shares">0</us-gaap:TreasuryStockSharesAcquired>
    <us-gaap:TreasuryStockSharesAcquired
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjA3ZjM2MjA4MGM2ZTRjNGM4ODllMDA2NzRiMDAxNWIwL3RhYmxlcmFuZ2U6MDdmMzYyMDgwYzZlNGM0Yzg4OWUwMDY3NGIwMDE1YjBfMi0zLTEtMS0xMDAwMzY_3afe94e6-2253-49bc-aa26-d37b42f5add2"
      unitRef="shares">121544</us-gaap:TreasuryStockSharesAcquired>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjA3ZjM2MjA4MGM2ZTRjNGM4ODllMDA2NzRiMDAxNWIwL3RhYmxlcmFuZ2U6MDdmMzYyMDgwYzZlNGM0Yzg4OWUwMDY3NGIwMDE1YjBfMy0xLTEtMS0xMDAwMzY_c9d6995f-9e42-4b70-9da3-8a9a4baa64c2"
      unitRef="usd">0</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjA3ZjM2MjA4MGM2ZTRjNGM4ODllMDA2NzRiMDAxNWIwL3RhYmxlcmFuZ2U6MDdmMzYyMDgwYzZlNGM0Yzg4OWUwMDY3NGIwMDE1YjBfMy0zLTEtMS0xMDAwMzY_a44c91aa-eb61-491c-abe9-4600256d6747"
      unitRef="usd">15226000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:TreasuryStockAcquiredAverageCostPerShare
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjA3ZjM2MjA4MGM2ZTRjNGM4ODllMDA2NzRiMDAxNWIwL3RhYmxlcmFuZ2U6MDdmMzYyMDgwYzZlNGM0Yzg4OWUwMDY3NGIwMDE1YjBfNC0xLTEtMS0xMDAwMzY_f9b6e112-1403-4803-918f-618aa4ce7a74"
      unitRef="usdPerShare">0</us-gaap:TreasuryStockAcquiredAverageCostPerShare>
    <us-gaap:TreasuryStockAcquiredAverageCostPerShare
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82MS9mcmFnOmMwZjk2ZDVhMGYzODQwNDdiNDRlZjFiZjI2NmEwOTE0L3RhYmxlOjA3ZjM2MjA4MGM2ZTRjNGM4ODllMDA2NzRiMDAxNWIwL3RhYmxlcmFuZ2U6MDdmMzYyMDgwYzZlNGM0Yzg4OWUwMDY3NGIwMDE1YjBfNC0zLTEtMS0xMDAwMzY_4eed7e9f-cd27-43a6-8596-b6b35e91dc16"
      unitRef="usdPerShare">125.27</us-gaap:TreasuryStockAcquiredAverageCostPerShare>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg2MQ_d8a9f8eb-f019-4560-b862-c010cf0ae29a">Stock-Based Compensation&lt;div style="margin-top:6pt;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 equity compensation plans provide for the grant of incentive and nonqualified stock options, as well as other stock-based awards including performance share units (&#x201c;PSUs&#x201d;), restricted stock awards (&#x201c;RSAs&#x201d;), restricted stock units (&#x201c;RSUs&#x201d;), and deferred stock units (&#x201c;DSUs&#x201d;), to employees, non-employee directors and other consultants who provide services to us. We also provide an employee stock purchase plan (&#x201c;ESPP&#x201d;) and 401(k) match to eligible participants. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 based on grant date award fair value. This cost is recognized over the period for which the employee is required to provide service in exchange for the award or the award performance period, except for expenses relating to retirement-eligible employees that have not given their required notice, which is recognized on a pro-rata basis over the notice period prior to retirement. At &lt;/span&gt;&lt;span style="color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;March&#160;31, 2023&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;, there were 12.8 million shares available for grant under approved equity compensation plans.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Stock-based compensation expense was allocated in the condensed consolidated statements of comprehensive income as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.090%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.682%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.202%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.411%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.205%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Cost of revenues&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;2,503&#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;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-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;2,179&#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="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;Operating expenses&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:2px 1pt;text-align:right;vertical-align: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="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 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sales and marketing&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,423&#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,032&#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="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 10pt;text-align:left;vertical-align: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&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,777&#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,474&#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="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 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;General and administrative&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,077&#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,330&#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="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;11,780&#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;9,015&#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="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;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Stock-based compensation expense by grant type or plan was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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 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="padding:0 1pt"/&gt;&lt;td colspan="9" 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:8pt;font-weight:700;line-height:100%"&gt;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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:#CFF0FC;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;Stock options&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;border-top:0.75pt 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:#CFF0FC;border-top:0.75pt 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;490&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#CFF0FC;padding:0 1pt"/&gt;&lt;td style="background-color:#CFF0FC;border-top:0.75pt 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:#CFF0FC;border-top:0.75pt 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;477&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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="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;PSUs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,926&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,699&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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:#CFF0FC;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;RSUs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#CFF0FC;padding:2px 0 2px 1pt;text-align:right;vertical-align: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,062&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#CFF0FC;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#CFF0FC;padding:2px 0 2px 1pt;text-align:right;vertical-align: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,638&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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="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;RSAs &amp;amp; DSUs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;108&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;108&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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:#CFF0FC;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;ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#CFF0FC;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;589&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#CFF0FC;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#CFF0FC;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;574&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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="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;401(k) stock match&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;605&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;519&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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:#CFF0FC;padding:0 1pt"/&gt;&lt;td style="background-color:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt 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:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt 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,780&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#CFF0FC;padding:0 1pt"/&gt;&lt;td style="background-color:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt 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:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt 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,015&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 March&#160;31, 2023, there was $63.8 million of unrecognized stock-based compensation expense under our equity compensation plans, which is expected to be recognized on a primarily straight-line basis over a weighted average period of 2.6 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;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-top:6pt;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 option activity was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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;Three Months Ended&lt;br/&gt;March 31, 2023&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;Options (#) &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;Weighted Average&lt;br/&gt;Exercise Price &lt;br/&gt;($/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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding, beginning of period&lt;/span&gt;&lt;/td&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;562,697&#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;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-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;56.24&#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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:bottom"&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="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;30,148&#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;150.76&#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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Exercised&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;(68,088)&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;32.06&#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 10pt;text-align:left;vertical-align:bottom"&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="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,916)&lt;/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;123.49&#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;Outstanding, end of period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;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;522,841&#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;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;64.60&#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 style="margin-top:6pt;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;Of the total outstanding options at March&#160;31, 2023, 0.4 million were exercisable. The outstanding and exercisable options had a weighted average exercise price of $53.22 per share and a weighted average remaining contractual life of 3.0 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 weighted average grant date fair value of options granted during the three months ended March&#160;31, 2023 was $54.53 per share. This was estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:85.718%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.082%"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;Life (in years)&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;3.9&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:114%"&gt;Volatility&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:114%"&gt;39.7&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;%&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:114%"&gt;Dividend yield&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:114%"&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="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:114%"&gt;Risk-free interest rate&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:114%"&gt;4.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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Performance Share Units, Restricted Stock Units and Awards, and Deferred Stock Units&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;In each of the quarters ended March 31, 2023, 2022, 2021, and 2020 we granted PSU awards with a target performance level. &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;These awards are earned based upon our Company&#x2019;s total shareholder return as compared to an indexed total shareholder return over the course of a fiscal based three-year performance period, starting in the year of grant. Earned awards vest in the quarter following the conclusion of the performance period. In the three months ended March 31, &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;2023&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;, PSU awards granted in 2019 vested at the maximum performance level and 0.1&#160;million shares of common stock were issued.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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;Three Months Ended&lt;br/&gt;March 31, 2023&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;#&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;Weighted Average Grant&lt;br/&gt;Date Fair Value &lt;br/&gt;($/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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding, beginning of period&lt;/span&gt;&lt;/td&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;712,158&#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;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-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;103.93&#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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:bottom"&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="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;304,635&#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;163.06&#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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested and common stock issued&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;(305,123)&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;74.70&#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 10pt;text-align:left;vertical-align:bottom"&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="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,798)&lt;/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;112.93&#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;Outstanding, end of period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;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;707,872&#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;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;141.92&#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 style="margin-top:6pt;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 number of PSUs, RSUs, RSAs, and DSUs outstanding at March&#160;31, 2023 included less than 0.1&#160;million units that have vested, but the shares of common stock have not yet been issued, pursuant to the terms of the underlying agreements.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&gt;&lt;span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%"&gt;Employee Stock Purchase Plan&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 ESPP activity was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-indent:36pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands, except shares)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Amounts for shares purchased&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;241&#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;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-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;147&#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="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;Shares purchased&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;2,549&#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,698&#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="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;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 total of 1.7&#160;million shares of common stock are reserved for issuance under the ESPP as of March&#160;31, 2023.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 fair value was estimated based on the market price of our common stock at the beginning of the offering period using the following assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:85.718%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.082%"/&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;Life (in years)&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;0.5&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;Volatility&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;46.4&#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;span style="color:#000000;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:#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;Dividend yield&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;/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;Risk-free interest rate&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;2.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;span style="color:#000000;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:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfOTUw_3d2868cb-43a9-4109-8ea9-a62e26ebac7a"
      unitRef="shares">12800000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg2OQ_36af72b6-a0c8-461d-89b5-2eacc04de3f6">&lt;div style="margin-top:6pt;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;Stock-based compensation expense was allocated in the condensed consolidated statements of comprehensive income as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.090%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.682%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.202%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.411%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.205%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Cost of revenues&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;2,503&#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;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-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;2,179&#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="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;Operating expenses&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:2px 1pt;text-align:right;vertical-align: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="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 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sales and marketing&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,423&#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,032&#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="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 10pt;text-align:left;vertical-align: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&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,777&#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,474&#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="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 2px 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;General and administrative&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,077&#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,330&#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="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;11,780&#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;9,015&#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="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;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Stock-based compensation expense by grant type or plan was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt"&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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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 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="padding:0 1pt"/&gt;&lt;td colspan="9" 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:8pt;font-weight:700;line-height:100%"&gt;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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:#CFF0FC;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;Stock options&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;border-top:0.75pt 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:#CFF0FC;border-top:0.75pt 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;490&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#CFF0FC;padding:0 1pt"/&gt;&lt;td style="background-color:#CFF0FC;border-top:0.75pt 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:#CFF0FC;border-top:0.75pt 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;477&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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="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;PSUs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,926&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align: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,699&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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:#CFF0FC;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;RSUs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#CFF0FC;padding:2px 0 2px 1pt;text-align:right;vertical-align: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,062&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#CFF0FC;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#CFF0FC;padding:2px 0 2px 1pt;text-align:right;vertical-align: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,638&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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="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;RSAs &amp;amp; DSUs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;108&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;108&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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:#CFF0FC;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;ESPP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#CFF0FC;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;589&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#CFF0FC;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#CFF0FC;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;574&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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="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;401(k) stock match&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;605&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;519&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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:#CFF0FC;padding:0 1pt"/&gt;&lt;td style="background-color:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt 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:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt 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,780&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#CFF0FC;padding:0 1pt"/&gt;&lt;td style="background-color:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt 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:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt 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,015&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#CFF0FC;border-bottom:3pt double #000000;border-top:0.75pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&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;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i93dad56146ff44d98768cfefa65393e7_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjhhNWMwYWQ1ODgxZjRhY2VhMGMyNzU0YzJkYTM4Yzg5L3RhYmxlcmFuZ2U6OGE1YzBhZDU4ODFmNGFjZWEwYzI3NTRjMmRhMzhjODlfMi0xLTEtMS0xMDAwMzY_115c64b5-b6d7-4a12-b8cd-e24b58f33e32"
      unitRef="usd">2503000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic6e6e85d532b4870801fe3245685e79a_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjhhNWMwYWQ1ODgxZjRhY2VhMGMyNzU0YzJkYTM4Yzg5L3RhYmxlcmFuZ2U6OGE1YzBhZDU4ODFmNGFjZWEwYzI3NTRjMmRhMzhjODlfMi0zLTEtMS0xMDAwMzY_439b50bb-7690-4f46-ba67-e60bef2f7dcb"
      unitRef="usd">2179000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="icf5aa811f4814632b2861846f77139b8_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjhhNWMwYWQ1ODgxZjRhY2VhMGMyNzU0YzJkYTM4Yzg5L3RhYmxlcmFuZ2U6OGE1YzBhZDU4ODFmNGFjZWEwYzI3NTRjMmRhMzhjODlfNC0xLTEtMS0xMDAwMzY_e1afd064-e06e-4d40-ae1c-382235e018a7"
      unitRef="usd">2423000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i3a215ac4955d48c8bdf4ef5efe7b2501_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjhhNWMwYWQ1ODgxZjRhY2VhMGMyNzU0YzJkYTM4Yzg5L3RhYmxlcmFuZ2U6OGE1YzBhZDU4ODFmNGFjZWEwYzI3NTRjMmRhMzhjODlfNC0zLTEtMS0xMDAwMzY_a93b2765-37a0-43b2-9c88-a07a30640780"
      unitRef="usd">2032000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ia33d3193bbcb46b69d9ea868360410f0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjhhNWMwYWQ1ODgxZjRhY2VhMGMyNzU0YzJkYTM4Yzg5L3RhYmxlcmFuZ2U6OGE1YzBhZDU4ODFmNGFjZWEwYzI3NTRjMmRhMzhjODlfNS0xLTEtMS0xMDAwMzY_a5260c0c-aae3-4d01-ba5a-38e0bf87437f"
      unitRef="usd">1777000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i48945f26aa664703a3348e4cba198e2d_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjhhNWMwYWQ1ODgxZjRhY2VhMGMyNzU0YzJkYTM4Yzg5L3RhYmxlcmFuZ2U6OGE1YzBhZDU4ODFmNGFjZWEwYzI3NTRjMmRhMzhjODlfNS0zLTEtMS0xMDAwMzY_04191289-935b-42e5-8a15-260984ea022d"
      unitRef="usd">1474000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i327830e256a546128e87027704b0e090_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjhhNWMwYWQ1ODgxZjRhY2VhMGMyNzU0YzJkYTM4Yzg5L3RhYmxlcmFuZ2U6OGE1YzBhZDU4ODFmNGFjZWEwYzI3NTRjMmRhMzhjODlfNi0xLTEtMS0xMDAwMzY_55c0af12-cf97-426d-84f8-97d7a1607ac0"
      unitRef="usd">5077000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="id2486bd8e47b45c383a6d5f3f183cd42_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjhhNWMwYWQ1ODgxZjRhY2VhMGMyNzU0YzJkYTM4Yzg5L3RhYmxlcmFuZ2U6OGE1YzBhZDU4ODFmNGFjZWEwYzI3NTRjMmRhMzhjODlfNi0zLTEtMS0xMDAwMzY_a87d3407-d835-4978-affd-606c4b1f9962"
      unitRef="usd">3330000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjhhNWMwYWQ1ODgxZjRhY2VhMGMyNzU0YzJkYTM4Yzg5L3RhYmxlcmFuZ2U6OGE1YzBhZDU4ODFmNGFjZWEwYzI3NTRjMmRhMzhjODlfNy0xLTEtMS0xMDAwMzY_e4e5c2b0-84ef-473d-88d8-d23fe2c02b12"
      unitRef="usd">11780000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjhhNWMwYWQ1ODgxZjRhY2VhMGMyNzU0YzJkYTM4Yzg5L3RhYmxlcmFuZ2U6OGE1YzBhZDU4ODFmNGFjZWEwYzI3NTRjMmRhMzhjODlfNy0zLTEtMS0xMDAwMzY_1cfe5d53-e688-40b0-aed9-7deacfe99f7e"
      unitRef="usd">9015000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i8bfedaaee3a94a9090f3613fc3299847_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfMi0xLTEtMS0xMDAwMzY_607b83af-d97c-402b-9d63-c1c6b4b42ff3"
      unitRef="usd">490000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i7c8e86e8da8b413e95c1e1f7ad578007_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfMi0zLTEtMS0xMDAwMzY_2b8353a4-7a78-48ef-a687-7cf299d938b7"
      unitRef="usd">477000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ie078c18202d541869aac6a5c656ff133_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfMy0xLTEtMS0xMDAwMzY_f276f006-0448-46fe-ab87-968317d90680"
      unitRef="usd">3926000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i81fe3639cdd0409783650946d9f206c1_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfMy0zLTEtMS0xMDAwMzY_161e7ff2-f344-4ff6-bf34-eced814b5041"
      unitRef="usd">2699000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="if541830b99f34fada5f80dbf22b9a42b_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfNC0xLTEtMS0xMDAwMzY_d107d4ff-d6be-4a4d-b30f-d7fd03f44656"
      unitRef="usd">6062000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ic919f20ea9e34d7d8a49f792f2850731_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfNC0zLTEtMS0xMDAwMzY_8e700380-80a6-47dc-8e7a-228bb12e754a"
      unitRef="usd">4638000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i139966462e7d44a6a65729d6e89d9a2b_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfNS0xLTEtMS0xMDAwMzY_cc570036-b3fa-4fc5-8031-3de6df7d911d"
      unitRef="usd">108000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i9efb8a2ef80941b3b94082525317fe20_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfNS0zLTEtMS0xMDAwMzY_ce5a47a4-77fe-4fe0-a814-1413631c339b"
      unitRef="usd">108000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i7004f48977d74e228c6e84df8cbc78b7_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfNi0xLTEtMS0xMDAwMzY_6066d94f-ddee-4a23-a604-f707eafc5541"
      unitRef="usd">589000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="if398ccb0bdb94ada908408abec6ccc79_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfNi0zLTEtMS0xMDAwMzY_731830fc-5d50-4090-aea7-2a875cd2996d"
      unitRef="usd">574000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ice4475e67a4a4f4e8c671ae4a60c0e9e_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfNy0xLTEtMS0xMDAwMzY_8ae12274-0097-4db2-ae0c-a3df125b6788"
      unitRef="usd">605000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="iace8208134024531b6ba59e56e7e46a1_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfNy0zLTEtMS0xMDAwMzY_6dbd03f5-5849-4c77-81b4-eeb1d63a1c33"
      unitRef="usd">519000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfOC0xLTEtMS0xMDAwMzY_fb2e9d76-d191-4563-88e1-12f29c38ced5"
      unitRef="usd">11780000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmI3NzIwYWVjZjY3ZDQ2YWM4MTJiOGNlNmMxNzQ4YjA0L3RhYmxlcmFuZ2U6Yjc3MjBhZWNmNjdkNDZhYzgxMmI4Y2U2YzE3NDhiMDRfOC0zLTEtMS0xMDAwMzY_86ee5a9e-48de-4b12-bf03-bdf119bb5c5a"
      unitRef="usd">9015000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMTE3Mw_401cf6c1-6b45-49b0-8a12-d8df535d76cf"
      unitRef="usd">63800000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMTM2Ng_d03a0775-75a3-44a3-bcc8-b89c43bf85d3">P2Y7M6D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg2NQ_1692b114-c69d-4621-84a0-18489171461c">&lt;div style="margin-top:6pt;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 option activity was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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;Three Months Ended&lt;br/&gt;March 31, 2023&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;Options (#) &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;Weighted Average&lt;br/&gt;Exercise Price &lt;br/&gt;($/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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding, beginning of period&lt;/span&gt;&lt;/td&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;562,697&#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;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-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;56.24&#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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:bottom"&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="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;30,148&#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;150.76&#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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Exercised&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;(68,088)&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;32.06&#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 10pt;text-align:left;vertical-align:bottom"&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="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,916)&lt;/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;123.49&#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;Outstanding, end of period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;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;522,841&#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;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;64.60&#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:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmQ2YmFhMTAwZjdmYzRmMDliMWYzMDllMDcwN2YwMmM1L3RhYmxlcmFuZ2U6ZDZiYWExMDBmN2ZjNGYwOWIxZjMwOWUwNzA3ZjAyYzVfMi0xLTEtMS0xMDAwMzY_32f76612-0292-4163-a444-4d2392486b94"
      unitRef="shares">562697</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i074918b0d14149a8b0f12b21ce312a7c_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmQ2YmFhMTAwZjdmYzRmMDliMWYzMDllMDcwN2YwMmM1L3RhYmxlcmFuZ2U6ZDZiYWExMDBmN2ZjNGYwOWIxZjMwOWUwNzA3ZjAyYzVfMi0zLTEtMS0xMDAwMzY_78573ab4-be6e-4158-9240-90781c97a01f"
      unitRef="usdPerShare">56.24</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmQ2YmFhMTAwZjdmYzRmMDliMWYzMDllMDcwN2YwMmM1L3RhYmxlcmFuZ2U6ZDZiYWExMDBmN2ZjNGYwOWIxZjMwOWUwNzA3ZjAyYzVfMy0xLTEtMS0xMDAwMzY_dfeb61e8-1ed3-46cd-b69c-1a80a76a4d3a"
      unitRef="shares">30148</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmQ2YmFhMTAwZjdmYzRmMDliMWYzMDllMDcwN2YwMmM1L3RhYmxlcmFuZ2U6ZDZiYWExMDBmN2ZjNGYwOWIxZjMwOWUwNzA3ZjAyYzVfMy0zLTEtMS0xMDAwMzY_8329d832-e652-4963-a869-7c4edca503b7"
      unitRef="usdPerShare">150.76</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmQ2YmFhMTAwZjdmYzRmMDliMWYzMDllMDcwN2YwMmM1L3RhYmxlcmFuZ2U6ZDZiYWExMDBmN2ZjNGYwOWIxZjMwOWUwNzA3ZjAyYzVfNC0xLTEtMS0xMDAwMzY_dc872dec-88da-4759-aaba-6439737b66e7"
      unitRef="shares">68088</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmQ2YmFhMTAwZjdmYzRmMDliMWYzMDllMDcwN2YwMmM1L3RhYmxlcmFuZ2U6ZDZiYWExMDBmN2ZjNGYwOWIxZjMwOWUwNzA3ZjAyYzVfNC0zLTEtMS0xMDAwMzY_56c967c2-42c5-470a-83e4-a9d16a610a43"
      unitRef="usdPerShare">32.06</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmQ2YmFhMTAwZjdmYzRmMDliMWYzMDllMDcwN2YwMmM1L3RhYmxlcmFuZ2U6ZDZiYWExMDBmN2ZjNGYwOWIxZjMwOWUwNzA3ZjAyYzVfNS0xLTEtMS0xMDAwMzY_b9968f54-83d2-42c2-a3b6-2b34cdbe7ede"
      unitRef="shares">1916</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmQ2YmFhMTAwZjdmYzRmMDliMWYzMDllMDcwN2YwMmM1L3RhYmxlcmFuZ2U6ZDZiYWExMDBmN2ZjNGYwOWIxZjMwOWUwNzA3ZjAyYzVfNS0zLTEtMS0xMDAwMzY_230957f8-9da3-4557-963e-4c76925ab022"
      unitRef="usdPerShare">123.49</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmQ2YmFhMTAwZjdmYzRmMDliMWYzMDllMDcwN2YwMmM1L3RhYmxlcmFuZ2U6ZDZiYWExMDBmN2ZjNGYwOWIxZjMwOWUwNzA3ZjAyYzVfNi0xLTEtMS0xMDAwMzY_41b037db-76bf-44ca-afc7-e6ee4903f48a"
      unitRef="shares">522841</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i3c3314e4b6ab4b059373b9922fd89803_I20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmQ2YmFhMTAwZjdmYzRmMDliMWYzMDllMDcwN2YwMmM1L3RhYmxlcmFuZ2U6ZDZiYWExMDBmN2ZjNGYwOWIxZjMwOWUwNzA3ZjAyYzVfNi0zLTEtMS0xMDAwMzY_93601d88-b262-4fcf-844b-4f0e3c658d42"
      unitRef="usdPerShare">64.60</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="ibfc64785d5dc41fb8fbce3eb2022373c_I20230331"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMTQyOQ_5fac3e63-6b82-4444-ba79-1e5e9432c805"
      unitRef="shares">400000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="ibfc64785d5dc41fb8fbce3eb2022373c_I20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMTUzMQ_e45c958d-b975-4fbb-92c8-edcca925a3ad"
      unitRef="usdPerShare">53.22</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="i8bfedaaee3a94a9090f3613fc3299847_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMTU5Nw_cfa9e9ad-adc1-4245-a868-61395512f1d4">P3Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg1Nw_bea73802-795c-4f06-90f1-1eb8c3799314">&lt;div style="margin-top:6pt;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 weighted average grant date fair value of options granted during the three months ended March&#160;31, 2023 was $54.53 per share. This was estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:85.718%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.082%"/&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:top"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;Life (in years)&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;3.9&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:114%"&gt;Volatility&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:114%"&gt;39.7&#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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;%&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:114%"&gt;Dividend yield&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:114%"&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="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:114%"&gt;Risk-free interest rate&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:114%"&gt;4.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;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:114%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i8bfedaaee3a94a9090f3613fc3299847_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMTY5Nw_6765361c-25ca-4deb-8d46-f2f7496f4f66"
      unitRef="usdPerShare">54.53</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i8bfedaaee3a94a9090f3613fc3299847_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjM4YTQzMmNlZTBhYTQ0ZGRiYjhkM2IyNmM2MWZkZTQ4L3RhYmxlcmFuZ2U6MzhhNDMyY2VlMGFhNDRkZGJiOGQzYjI2YzYxZmRlNDhfMC0xLTEtMS0xMDAwMzY_896130b6-930f-4d3a-9e0f-b7a4609401f0">P3Y10M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsWeightedAverageVolatilityRate
      contextRef="i8bfedaaee3a94a9090f3613fc3299847_D20230101-20230331"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjM4YTQzMmNlZTBhYTQ0ZGRiYjhkM2IyNmM2MWZkZTQ4L3RhYmxlcmFuZ2U6MzhhNDMyY2VlMGFhNDRkZGJiOGQzYjI2YzYxZmRlNDhfMS0xLTEtMS0xMDAwMzY_5d6813e5-b771-4823-8738-0ff2a23978cf"
      unitRef="number">0.397</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsWeightedAverageVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="i8bfedaaee3a94a9090f3613fc3299847_D20230101-20230331"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjM4YTQzMmNlZTBhYTQ0ZGRiYjhkM2IyNmM2MWZkZTQ4L3RhYmxlcmFuZ2U6MzhhNDMyY2VlMGFhNDRkZGJiOGQzYjI2YzYxZmRlNDhfMi0xLTEtMS0xMDAwMzY_7ac421a3-d9ca-496e-b0f1-1c72abb5ada1"
      unitRef="number">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i8bfedaaee3a94a9090f3613fc3299847_D20230101-20230331"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjM4YTQzMmNlZTBhYTQ0ZGRiYjhkM2IyNmM2MWZkZTQ4L3RhYmxlcmFuZ2U6MzhhNDMyY2VlMGFhNDRkZGJiOGQzYjI2YzYxZmRlNDhfMy0xLTEtMS0xMDAwMzY_fee25bdf-c858-4c71-8269-8e69f5dfa23a"
      unitRef="number">0.042</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i8bf3eacc627448edb90205fb30ece2b5_D20200101-20200331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg3MA_40500f9c-b2c5-44c7-8c9f-df2e6c327aea">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ia94b7f289d9c466e924f9972711567b8_D20210101-20210331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg3MA_63c549d0-97d7-4037-b130-7d49f0856385">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i81fe3639cdd0409783650946d9f206c1_D20220101-20220331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg3MA_eb936149-838a-4450-a6df-7dc2ae31354f">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ie078c18202d541869aac6a5c656ff133_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg3MA_eee8f020-6475-41ef-ad79-5d4ab4c2885e">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod
      contextRef="i648dacc2484645a191cd2b52aedd0022_D20220101-20220331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjQ3MQ_108b67d3-d52e-476d-bc65-69d76a31a07b"
      unitRef="shares">100000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesIssuedInPeriod>
    <us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg2NA_f2728dbe-20ca-4594-baaa-5acb0f2c13b3">&lt;div style="margin-top:6pt;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;Activity for our PSUs, RSUs, RSAs, and DSUs in aggregate was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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;Three Months Ended&lt;br/&gt;March 31, 2023&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;#&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;Weighted Average Grant&lt;br/&gt;Date Fair Value &lt;br/&gt;($/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:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding, beginning of period&lt;/span&gt;&lt;/td&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;712,158&#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;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-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;103.93&#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;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 10pt;text-align:left;vertical-align:bottom"&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="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;304,635&#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;163.06&#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 10pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested and common stock issued&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;(305,123)&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;74.70&#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 10pt;text-align:left;vertical-align:bottom"&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="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,798)&lt;/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;112.93&#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;Outstanding, end of period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000;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;707,872&#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;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;141.92&#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:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i8eae6a60d667472db9b3b0b29fa91b99_I20221231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjRlOTRkZmI2MWMwNDRhZWNhZjU3ZTFiYjc5YmM5MGE1L3RhYmxlcmFuZ2U6NGU5NGRmYjYxYzA0NGFlY2FmNTdlMWJiNzliYzkwYTVfMi0xLTEtMS0xMDAwMzY_b3f3993f-d62c-4009-806c-d977244663c1"
      unitRef="shares">712158</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i8eae6a60d667472db9b3b0b29fa91b99_I20221231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjRlOTRkZmI2MWMwNDRhZWNhZjU3ZTFiYjc5YmM5MGE1L3RhYmxlcmFuZ2U6NGU5NGRmYjYxYzA0NGFlY2FmNTdlMWJiNzliYzkwYTVfMi0zLTEtMS0xMDAwMzY_b1b0c305-8078-4293-85ce-601ad1f19e20"
      unitRef="usdPerShare">103.93</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="ifbba1baca1234a62b6d6de074ecb57d4_D20230101-20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjRlOTRkZmI2MWMwNDRhZWNhZjU3ZTFiYjc5YmM5MGE1L3RhYmxlcmFuZ2U6NGU5NGRmYjYxYzA0NGFlY2FmNTdlMWJiNzliYzkwYTVfMy0xLTEtMS0xMDAwMzY_fc689529-232b-4e60-8019-bf1beddca469"
      unitRef="shares">304635</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ifbba1baca1234a62b6d6de074ecb57d4_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjRlOTRkZmI2MWMwNDRhZWNhZjU3ZTFiYjc5YmM5MGE1L3RhYmxlcmFuZ2U6NGU5NGRmYjYxYzA0NGFlY2FmNTdlMWJiNzliYzkwYTVfMy0zLTEtMS0xMDAwMzY_078bdfbd-04e9-4acd-9cf6-076459743c4f"
      unitRef="usdPerShare">163.06</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="ifbba1baca1234a62b6d6de074ecb57d4_D20230101-20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjRlOTRkZmI2MWMwNDRhZWNhZjU3ZTFiYjc5YmM5MGE1L3RhYmxlcmFuZ2U6NGU5NGRmYjYxYzA0NGFlY2FmNTdlMWJiNzliYzkwYTVfNC0xLTEtMS0xMDAwMzY_32111958-0f1e-4075-aacf-0d3d426a9c8f"
      unitRef="shares">305123</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="ifbba1baca1234a62b6d6de074ecb57d4_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjRlOTRkZmI2MWMwNDRhZWNhZjU3ZTFiYjc5YmM5MGE1L3RhYmxlcmFuZ2U6NGU5NGRmYjYxYzA0NGFlY2FmNTdlMWJiNzliYzkwYTVfNC0zLTEtMS0xMDAwMzY_252ed2ad-d8e8-4183-b6d2-ef658c1eb1da"
      unitRef="usdPerShare">74.70</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="ifbba1baca1234a62b6d6de074ecb57d4_D20230101-20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjRlOTRkZmI2MWMwNDRhZWNhZjU3ZTFiYjc5YmM5MGE1L3RhYmxlcmFuZ2U6NGU5NGRmYjYxYzA0NGFlY2FmNTdlMWJiNzliYzkwYTVfNS0xLTEtMS0xMDAwMzY_e80f70d1-cdbb-44ac-99b9-717e651c5836"
      unitRef="shares">3798</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="ifbba1baca1234a62b6d6de074ecb57d4_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjRlOTRkZmI2MWMwNDRhZWNhZjU3ZTFiYjc5YmM5MGE1L3RhYmxlcmFuZ2U6NGU5NGRmYjYxYzA0NGFlY2FmNTdlMWJiNzliYzkwYTVfNS0zLTEtMS0xMDAwMzY_4ebdcbf0-46e9-499c-94e3-87aa905a38bf"
      unitRef="usdPerShare">112.93</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i8243d525cc6644e3a8b086461514844d_I20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjRlOTRkZmI2MWMwNDRhZWNhZjU3ZTFiYjc5YmM5MGE1L3RhYmxlcmFuZ2U6NGU5NGRmYjYxYzA0NGFlY2FmNTdlMWJiNzliYzkwYTVfNi0xLTEtMS0xMDAwMzY_b64ad37d-9c19-47bc-9390-222833d4022c"
      unitRef="shares">707872</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i8243d525cc6644e3a8b086461514844d_I20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjRlOTRkZmI2MWMwNDRhZWNhZjU3ZTFiYjc5YmM5MGE1L3RhYmxlcmFuZ2U6NGU5NGRmYjYxYzA0NGFlY2FmNTdlMWJiNzliYzkwYTVfNi0zLTEtMS0xMDAwMzY_dec150a4-15c0-4301-940d-a5cb88988ac8"
      unitRef="usdPerShare">141.92</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <spsc:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAtPeriodEnd
      contextRef="i75224f37ba834f5087c46bd2805cd5e7_I20230331"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjU5Mw_e031db4a-bee9-4052-b1c2-befd94726f53"
      unitRef="shares">100000</spsc:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAtPeriodEnd>
    <us-gaap:ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg1OA_f7dd3b52-3f69-4149-b596-4f7e0bb37388">&lt;div style="margin-top:6pt;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 ESPP activity was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-indent:36pt"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands, except shares)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Amounts for shares purchased&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;241&#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;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-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;147&#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="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;Shares purchased&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;2,549&#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,698&#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="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;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock>
    <spsc:ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward
      contextRef="ib25032b5986f435ab3c714e9ca244ca6_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmM0M2RjYzI3N2IxZjQyMmU4NDcwM2M5MzY4YjVlMGNlL3RhYmxlcmFuZ2U6YzQzZGNjMjc3YjFmNDIyZTg0NzAzYzkzNjhiNWUwY2VfMi0xLTEtMS0xMDAwMzY_4bca0fca-2802-4942-839e-352b56abb30d"
      unitRef="usd">241000</spsc:ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward>
    <spsc:ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward
      contextRef="idc151901553f4a18a424d23b910d4ad3_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmM0M2RjYzI3N2IxZjQyMmU4NDcwM2M5MzY4YjVlMGNlL3RhYmxlcmFuZ2U6YzQzZGNjMjc3YjFmNDIyZTg0NzAzYzkzNjhiNWUwY2VfMi0zLTEtMS0xMDAwMzY_a17b0a03-41ed-4148-89f1-b1cfa800e2f9"
      unitRef="usd">147000</spsc:ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward
      contextRef="ib25032b5986f435ab3c714e9ca244ca6_D20230101-20230331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmM0M2RjYzI3N2IxZjQyMmU4NDcwM2M5MzY4YjVlMGNlL3RhYmxlcmFuZ2U6YzQzZGNjMjc3YjFmNDIyZTg0NzAzYzkzNjhiNWUwY2VfMy0xLTEtMS0xMDAwMzY_b9084df6-ad98-44f5-9619-2aa652af1e89"
      unitRef="shares">2549</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward
      contextRef="idc151901553f4a18a424d23b910d4ad3_D20220101-20220331"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOmM0M2RjYzI3N2IxZjQyMmU4NDcwM2M5MzY4YjVlMGNlL3RhYmxlcmFuZ2U6YzQzZGNjMjc3YjFmNDIyZTg0NzAzYzkzNjhiNWUwY2VfMy0zLTEtMS0xMDAwMzY_3b7afc93-ca72-4487-b380-d868f05fdaef"
      unitRef="shares">1698</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward>
    <us-gaap:DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance
      contextRef="i8e28272e86eb4ea5b8c9d7b9f8471840_I20230331"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjc3NQ_cc2fb4e2-434f-492a-a106-9a919155d6ca"
      unitRef="shares">1700000</us-gaap:DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance>
    <us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RleHRyZWdpb246NzdjNTUzNTg1NjI4NDQ0NTk0ZjRiYTkyMWRlMmIyZjlfMjg2MA_15a11d7b-a405-47da-90ae-4ff04f3f9f7d">&lt;div style="margin-top:6pt;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 fair value was estimated based on the market price of our common stock at the beginning of the offering period using the following assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;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:85.718%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.082%"/&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;Life (in years)&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;0.5&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;Volatility&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;46.4&#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;span style="color:#000000;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:#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;Dividend yield&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;/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;Risk-free interest rate&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;2.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;span style="color:#000000;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:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="ib25032b5986f435ab3c714e9ca244ca6_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjgzYTVmNDQwNDVjNjQ5MDc4YmQyODkwMDdhN2ZhMjVkL3RhYmxlcmFuZ2U6ODNhNWY0NDA0NWM2NDkwNzhiZDI4OTAwN2E3ZmEyNWRfMC0xLTEtMS0xMDAwMzY_7b17ec7e-4086-4060-abd4-f0d50228d12f">P0Y6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="ib25032b5986f435ab3c714e9ca244ca6_D20230101-20230331"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjgzYTVmNDQwNDVjNjQ5MDc4YmQyODkwMDdhN2ZhMjVkL3RhYmxlcmFuZ2U6ODNhNWY0NDA0NWM2NDkwNzhiZDI4OTAwN2E3ZmEyNWRfMS0xLTEtMS0xMDAwMzY_df53249a-fcab-4ad8-b438-6400842df981"
      unitRef="number">0.464</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="ib25032b5986f435ab3c714e9ca244ca6_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjgzYTVmNDQwNDVjNjQ5MDc4YmQyODkwMDdhN2ZhMjVkL3RhYmxlcmFuZ2U6ODNhNWY0NDA0NWM2NDkwNzhiZDI4OTAwN2E3ZmEyNWRfMi0xLTEtMS0xMDAwMzY_6f134d7f-ae44-43e8-8376-2fc6d5f0b958"
      unitRef="number">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="ib25032b5986f435ab3c714e9ca244ca6_D20230101-20230331"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82NC9mcmFnOjc3YzU1MzU4NTYyODQ0NDU5NGY0YmE5MjFkZTJiMmY5L3RhYmxlOjgzYTVmNDQwNDVjNjQ5MDc4YmQyODkwMDdhN2ZhMjVkL3RhYmxlcmFuZ2U6ODNhNWY0NDA0NWM2NDkwNzhiZDI4OTAwN2E3ZmEyNWRfMy0xLTEtMS0xMDAwMzY_e01b60c9-1453-49ef-aa71-9526714bfba2"
      unitRef="number">0.025</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:IncomeTaxDisclosureTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl82Ny9mcmFnOjFlZWZkZjZjZTUwNTRmMWQ4M2FiMWEyYmQ4MDMzZDVmL3RleHRyZWdpb246MWVlZmRmNmNlNTA1NGYxZDgzYWIxYTJiZDgwMzNkNWZfOTE5_e6450187-3869-44aa-a879-552620b45bc0">Income TaxesWe record our interim provision for income taxes by applying our estimated annual effective tax rate to our year-to-date pre-tax income and adjust the provision for discrete tax items recorded in the period. Our provisions for income taxes includes current federal, state, and foreign income tax expense, as well as deferred tax expense.Differences between our effective tax rate and statutory tax rates are primarily due to the impact of permanently non-deductible expenses partially offset by the federal research and development credits and tax benefits associated with foreign-derived intangible income. Additionally, excess tax benefits generated upon settlement or exercise of stock awards are recognized as a reduction to income tax expense as a discrete tax item in the quarter that the event occurs, creating potentially significant fluctuation in tax expense by quarter and by year.</us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:OtherNonoperatingIncomeAndExpenseTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83MC9mcmFnOjI2MGU5MzQ1NzIyODQ2MzliZWNiNjM0YjQyZmZhODZlL3RleHRyZWdpb246MjYwZTkzNDU3MjI4NDYzOWJlY2I2MzRiNDJmZmE4NmVfODM_408049df-63b3-4816-ade8-6aa23ba709da">Other Income and Expense&lt;div style="margin-top:6pt;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 income, net included the following: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.696%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:72.152%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.969%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.407%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.972%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Investment income&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;1,127&#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;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-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&#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="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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Realized gain from foreign currency on cash and investments held&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;137&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;468&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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 income (expense), net&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;12&#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;(93)&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="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 13pt;text-align:left;vertical-align: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 other income, net&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;1,276&#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;423&#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="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;/table&gt;&lt;/div&gt;</us-gaap:OtherNonoperatingIncomeAndExpenseTextBlock>
    <us-gaap:ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83MC9mcmFnOjI2MGU5MzQ1NzIyODQ2MzliZWNiNjM0YjQyZmZhODZlL3RleHRyZWdpb246MjYwZTkzNDU3MjI4NDYzOWJlY2I2MzRiNDJmZmE4NmVfODQ_4b9802e5-c54e-4612-9a20-3e6ae2ce793a">&lt;div style="margin-top:6pt;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 income, net included the following: &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.696%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:72.152%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.969%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.407%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.972%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Investment income&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;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-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;1,127&#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;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-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&#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="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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Realized gain from foreign currency on cash and investments held&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;137&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;468&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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 income (expense), net&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;12&#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;(93)&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="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 13pt;text-align:left;vertical-align: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 other income, net&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New 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;1,276&#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;423&#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="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;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock>
    <us-gaap:InvestmentIncomeNet
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83MC9mcmFnOjI2MGU5MzQ1NzIyODQ2MzliZWNiNjM0YjQyZmZhODZlL3RhYmxlOmNlZDJkMmUwMGQ3MTRkMTNhMzA5M2E1YzhmZTAxZTA4L3RhYmxlcmFuZ2U6Y2VkMmQyZTAwZDcxNGQxM2EzMDkzYTVjOGZlMDFlMDhfMi0xLTEtMS0xMDAwMzY_4b03d3f5-69fb-414a-aac5-bb44e65d48cd"
      unitRef="usd">1127000</us-gaap:InvestmentIncomeNet>
    <us-gaap:InvestmentIncomeNet
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83MC9mcmFnOjI2MGU5MzQ1NzIyODQ2MzliZWNiNjM0YjQyZmZhODZlL3RhYmxlOmNlZDJkMmUwMGQ3MTRkMTNhMzA5M2E1YzhmZTAxZTA4L3RhYmxlcmFuZ2U6Y2VkMmQyZTAwZDcxNGQxM2EzMDkzYTVjOGZlMDFlMDhfMi0zLTEtMS0xMDAwMzY_57dfbbac-5c47-4239-a510-21039ea7a04e"
      unitRef="usd">48000</us-gaap:InvestmentIncomeNet>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83MC9mcmFnOjI2MGU5MzQ1NzIyODQ2MzliZWNiNjM0YjQyZmZhODZlL3RhYmxlOmNlZDJkMmUwMGQ3MTRkMTNhMzA5M2E1YzhmZTAxZTA4L3RhYmxlcmFuZ2U6Y2VkMmQyZTAwZDcxNGQxM2EzMDkzYTVjOGZlMDFlMDhfMy0xLTEtMS0xMDAwMzY_2e306d7c-6c20-43cf-81c7-c19b8bbeff59"
      unitRef="usd">137000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83MC9mcmFnOjI2MGU5MzQ1NzIyODQ2MzliZWNiNjM0YjQyZmZhODZlL3RhYmxlOmNlZDJkMmUwMGQ3MTRkMTNhMzA5M2E1YzhmZTAxZTA4L3RhYmxlcmFuZ2U6Y2VkMmQyZTAwZDcxNGQxM2EzMDkzYTVjOGZlMDFlMDhfMy0zLTEtMS0xMDAwMzY_dd8781fd-77d2-409a-b457-dd07572f88b2"
      unitRef="usd">468000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83MC9mcmFnOjI2MGU5MzQ1NzIyODQ2MzliZWNiNjM0YjQyZmZhODZlL3RhYmxlOmNlZDJkMmUwMGQ3MTRkMTNhMzA5M2E1YzhmZTAxZTA4L3RhYmxlcmFuZ2U6Y2VkMmQyZTAwZDcxNGQxM2EzMDkzYTVjOGZlMDFlMDhfNC0xLTEtMS0xMDAwMzY_4abb7e97-e369-40d2-99a6-b6b5e1b4cc2c"
      unitRef="usd">12000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83MC9mcmFnOjI2MGU5MzQ1NzIyODQ2MzliZWNiNjM0YjQyZmZhODZlL3RhYmxlOmNlZDJkMmUwMGQ3MTRkMTNhMzA5M2E1YzhmZTAxZTA4L3RhYmxlcmFuZ2U6Y2VkMmQyZTAwZDcxNGQxM2EzMDkzYTVjOGZlMDFlMDhfNC0zLTEtMS0xMDAwMzY_4f424e7a-c046-4fbb-bee6-500f1c9c5622"
      unitRef="usd">-93000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83MC9mcmFnOjI2MGU5MzQ1NzIyODQ2MzliZWNiNjM0YjQyZmZhODZlL3RhYmxlOmNlZDJkMmUwMGQ3MTRkMTNhMzA5M2E1YzhmZTAxZTA4L3RhYmxlcmFuZ2U6Y2VkMmQyZTAwZDcxNGQxM2EzMDkzYTVjOGZlMDFlMDhfNS0xLTEtMS0xMDAwMzY_6d9bdf81-1256-4e99-add7-1d6dc4182026"
      unitRef="usd">1276000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83MC9mcmFnOjI2MGU5MzQ1NzIyODQ2MzliZWNiNjM0YjQyZmZhODZlL3RhYmxlOmNlZDJkMmUwMGQ3MTRkMTNhMzA5M2E1YzhmZTAxZTA4L3RhYmxlcmFuZ2U6Y2VkMmQyZTAwZDcxNGQxM2EzMDkzYTVjOGZlMDFlMDhfNS0zLTEtMS0xMDAwMzY_f6474604-0926-4279-8e25-bf5c56f24525"
      unitRef="usd">423000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:EarningsPerShareTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RleHRyZWdpb246YjQ1YTg0Yjg4YjRlNGZiMzk4Y2M2NWVlYTExOTMyMDVfNDQ_af48b7a0-4ca4-486b-bc54-194e57d7cc13">Net Income Per Share&lt;div style="margin-top:6pt;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 and computation of basic and diluted net income per share were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.848%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.889%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.101%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.104%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands, except per share amounts)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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:700;line-height:100%"&gt;Numerator&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;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 #000;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="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 10pt;text-align:left;vertical-align: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 income&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;15,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 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,603&#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="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:700;line-height:100%"&gt;Denominator&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;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 10pt;text-align:left;vertical-align:middle"&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:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;36,427&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;36,136&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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 2px 28pt;text-align:left;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options to purchase common stock&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;307&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;419&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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 28pt;text-align:left;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;PSUs, RSUs, RSAs, and DSUs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;421&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;434&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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 2px 10pt;text-align:left;vertical-align:middle"&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-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,155&#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:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;36,989&#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:middle"/&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:700;line-height:100%"&gt;Net income per share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:2px 1pt;text-align:left;vertical-align: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:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:2px 1pt;text-align:left;vertical-align: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="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 2px 28pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Basic&lt;/span&gt;&lt;/td&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;0.42&#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;0.35&#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="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 28pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Diluted&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;0.41&#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;0.34&#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="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;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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 number of outstanding potential common shares that were excluded from the calculation of diluted net income per share as they were anti-dilutive was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.545%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.807%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.142%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.143%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Anti-dilutive shares&lt;/span&gt;&lt;/td&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;108&#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 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;151&#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="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;/table&gt;&lt;/div&gt;</us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RleHRyZWdpb246YjQ1YTg0Yjg4YjRlNGZiMzk4Y2M2NWVlYTExOTMyMDVfNDY_68ae5732-e9e6-4c62-92a1-7eaeae2fcfd0">&lt;div style="margin-top:6pt;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 and computation of basic and diluted net income per share were as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:12pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.848%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.889%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.101%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.104%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands, except per share amounts)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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:700;line-height:100%"&gt;Numerator&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;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 #000;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="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 10pt;text-align:left;vertical-align: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 income&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;15,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 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,603&#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="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:700;line-height:100%"&gt;Denominator&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;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 10pt;text-align:left;vertical-align:middle"&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:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;36,427&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;36,136&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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 2px 28pt;text-align:left;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options to purchase common stock&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;307&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;419&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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 28pt;text-align:left;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;PSUs, RSUs, RSAs, and DSUs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;421&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;434&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:middle"/&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 2px 10pt;text-align:left;vertical-align:middle"&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-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,155&#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:middle"/&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:middle"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;36,989&#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:middle"/&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:700;line-height:100%"&gt;Net income per share&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:2px 1pt;text-align:left;vertical-align: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:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000;padding:2px 1pt;text-align:left;vertical-align: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="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 2px 28pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Basic&lt;/span&gt;&lt;/td&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;0.42&#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;0.35&#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="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 28pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Diluted&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;0.41&#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;0.34&#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="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;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock>
    <us-gaap:NetIncomeLoss
      contextRef="ia18cb472d37847b4ae4f0e7c9fcc2093_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfMy0xLTEtMS0xMDAwMzY_82620c20-cf40-4702-84f0-a471c995fc78"
      unitRef="usd">15289000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfMy0zLTEtMS0xMDAwMzY_0d496217-35f7-48e4-a178-8b2addd5c76a"
      unitRef="usd">12603000</us-gaap:NetIncomeLoss>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfNS0xLTEtMS0xMDAwMzY_4a25c50d-ffb0-46d4-a736-81b2324d36d0"
      unitRef="shares">36427000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfNS0xLTEtMS0xMDAwMzY_c84e6d40-cbac-4c7b-a790-1c8c1c25b87d"
      unitRef="shares">36427000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfNS0zLTEtMS0xMDAwMzY_58753cf6-f053-4043-94fb-899997695560"
      unitRef="shares">36136000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfNi0xLTEtMS0xMDAwMzY_906c31f7-9c39-4089-aa34-842eefbd423a"
      unitRef="shares">307000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfNi0zLTEtMS0xMDAwMzY_0b84a1af-dcda-4d45-98d0-c564b11fe8be"
      unitRef="shares">419000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToContingentlyIssuableShares
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfNy0xLTEtMS0xMDAwMzY_b428caa0-d002-40d2-bc47-8d7ae31bc3b6"
      unitRef="shares">421000</us-gaap:IncrementalCommonSharesAttributableToContingentlyIssuableShares>
    <us-gaap:IncrementalCommonSharesAttributableToContingentlyIssuableShares
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfNy0zLTEtMS0xMDAwMzY_3ffbfa5e-57e2-424c-9370-495c75519610"
      unitRef="shares">434000</us-gaap:IncrementalCommonSharesAttributableToContingentlyIssuableShares>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfOC0xLTEtMS0xMDAwMzY_c9cacfb3-142b-417d-9c4d-2f606cff22e5"
      unitRef="shares">37155000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfOC0xLTEtMS0xMDAwMzY_fa9d9ba7-2aca-4232-8d9b-84c0a1c1b37a"
      unitRef="shares">37155000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfOC0zLTEtMS0xMDAwMzY_c5751d11-6758-48cb-b078-ed9b28e1254d"
      unitRef="shares">36989000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:EarningsPerShareBasic
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfMTAtMS0xLTEtMTAwMDM2_0719e344-6476-4784-9d91-a0f030deaf68"
      unitRef="usdPerShare">0.42</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfMTAtMy0xLTEtMTAwMDM2_f23d5e78-2d7e-45d9-8c58-c97ae58aa4a1"
      unitRef="usdPerShare">0.35</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfMTEtMS0xLTEtMTAwMDM2_a15b4e1a-3b5f-460b-a419-56495619e1a8"
      unitRef="usdPerShare">0.41</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmViYmQ5NGI3MGQ4NDRhZTliMmJhYzc1YjczOGVjNDkwL3RhYmxlcmFuZ2U6ZWJiZDk0YjcwZDg0NGFlOWIyYmFjNzViNzM4ZWM0OTBfMTEtMy0xLTEtMTAwMDM2_f644bfca-8be0-43b0-8275-26c3de0a498e"
      unitRef="usdPerShare">0.34</us-gaap:EarningsPerShareDiluted>
    <us-gaap:ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RleHRyZWdpb246YjQ1YTg0Yjg4YjRlNGZiMzk4Y2M2NWVlYTExOTMyMDVfNDM_a7859407-250b-429b-9bc2-6b8ad322acda">&lt;div style="margin-top:6pt;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 number of outstanding potential common shares that were excluded from the calculation of diluted net income per share as they were anti-dilutive was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.545%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:71.807%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.142%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.408%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.143%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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:700;line-height:100%"&gt;(in thousands)&lt;/span&gt;&lt;/td&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;2023&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;2022&lt;/span&gt;&lt;/td&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;Anti-dilutive shares&lt;/span&gt;&lt;/td&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;108&#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 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;151&#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="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;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmQ1YjU0NGMyNGFhZDQ3OTZhYjAxN2YxMGE1MGMzZDQzL3RhYmxlcmFuZ2U6ZDViNTQ0YzI0YWFkNDc5NmFiMDE3ZjEwYTUwYzNkNDNfMi0xLTEtMS0xMDAwMzY_4b73c8cb-40c9-4eab-992c-72accae54898"
      unitRef="shares">108000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="ibc31c76105bb47eeb270b9df01daeb9b_D20220101-20220331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83My9mcmFnOmI0NWE4NGI4OGI0ZTRmYjM5OGNjNjVlZWExMTkzMjA1L3RhYmxlOmQ1YjU0NGMyNGFhZDQ3OTZhYjAxN2YxMGE1MGMzZDQzL3RhYmxlcmFuZ2U6ZDViNTQ0YzI0YWFkNDc5NmFiMDE3ZjEwYTUwYzNkNDNfMi0zLTEtMS0xMDAwMzY_776de757-422b-446d-a746-9bcaa2435d38"
      unitRef="shares">151000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <spsc:GeographicInformationTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83Ni9mcmFnOjc0MzQwNjU5ZmJiZjQ5ZWVhYTUwYjhlZjg3YTgzZWE4L3RleHRyZWdpb246NzQzNDA2NTlmYmJmNDllZWFhNTBiOGVmODdhODNlYThfMTUx_d6b1e3a3-3831-42d2-aa18-781b00929b39">Geographic Information&lt;div style="margin-top:6pt"&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&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;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;Domestic revenue, which we define as revenue that was attributable to customers based within the U.S., was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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;2023&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;2022&lt;/span&gt;&lt;/td&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;Domestic revenue&lt;/span&gt;&lt;/td&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;84&#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;span style="color:#000000;font-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 #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;84&#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;span style="color:#000000;font-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="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;/table&gt;&lt;/div&gt;&lt;div style="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;No single jurisdiction outside of the U.S. had revenues in excess of 10%. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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-top:6pt;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 located at subsidiary and office locations outside of the U.S. was as follows:&lt;/span&gt;&lt;/div&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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;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;March 31,&lt;br/&gt;2023&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;December 31, 2022&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;International property and equipment&lt;/span&gt;&lt;/td&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;14&#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;span style="color:#000000;font-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 #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;13&#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;span style="color:#000000;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;</spsc:GeographicInformationTextBlock>
    <us-gaap:ScheduleOfProductInformationTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83Ni9mcmFnOjc0MzQwNjU5ZmJiZjQ5ZWVhYTUwYjhlZjg3YTgzZWE4L3RleHRyZWdpb246NzQzNDA2NTlmYmJmNDllZWFhNTBiOGVmODdhODNlYThfMTUy_9423f552-1ac0-4a94-adb5-c44fdbe3b6af">&lt;div style="margin-top:6pt;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;Domestic revenue, which we define as revenue that was attributable to customers based within the U.S., was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&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 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="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;Three Months Ended&lt;br/&gt;March 31,&lt;/span&gt;&lt;/td&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="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;2023&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;2022&lt;/span&gt;&lt;/td&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;Domestic revenue&lt;/span&gt;&lt;/td&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;84&#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;span style="color:#000000;font-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 #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;84&#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;span style="color:#000000;font-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="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;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfProductInformationTableTextBlock>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i09c91f829fc14da1b95accd9d3986fac_D20230101-20230331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83Ni9mcmFnOjc0MzQwNjU5ZmJiZjQ5ZWVhYTUwYjhlZjg3YTgzZWE4L3RhYmxlOjNiZjI0NTUyZTJlMjQ0OGE5NDMzNTc5MzljN2Q1ZmY2L3RhYmxlcmFuZ2U6M2JmMjQ1NTJlMmUyNDQ4YTk0MzM1NzkzOWM3ZDVmZjZfMi0xLTEtMS0xMDAwMzY_af5b410a-daf4-411c-836b-a97372634fbe"
      unitRef="number">0.84</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="ibdb411029c074e9ea4c1c3c2e805eced_D20220101-20220331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83Ni9mcmFnOjc0MzQwNjU5ZmJiZjQ5ZWVhYTUwYjhlZjg3YTgzZWE4L3RhYmxlOjNiZjI0NTUyZTJlMjQ0OGE5NDMzNTc5MzljN2Q1ZmY2L3RhYmxlcmFuZ2U6M2JmMjQ1NTJlMmUyNDQ4YTk0MzM1NzkzOWM3ZDVmZjZfMi0zLTEtMS0xMDAwMzY_3ad12008-b2fa-48d2-9824-7f6a8ee2bf5b"
      unitRef="number">0.84</us-gaap:ConcentrationRiskPercentage1>
    <spsc:ScheduleOfPercentageOfPropertyAndEquipmentNetTableTextBlock
      contextRef="i82344f46a362411d8be3fffa3e5d24c0_D20230101-20230331"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83Ni9mcmFnOjc0MzQwNjU5ZmJiZjQ5ZWVhYTUwYjhlZjg3YTgzZWE4L3RleHRyZWdpb246NzQzNDA2NTlmYmJmNDllZWFhNTBiOGVmODdhODNlYThfMTU0_f3720269-c463-4c57-8fb6-5893284d1920">&lt;div style="margin-top:6pt;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 located at subsidiary and office locations outside of the U.S. was as follows:&lt;/span&gt;&lt;/div&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:71.930%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.406%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.083%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;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;March 31,&lt;br/&gt;2023&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;December 31, 2022&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;International property and equipment&lt;/span&gt;&lt;/td&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;14&#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;span style="color:#000000;font-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 #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;13&#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;span style="color:#000000;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;</spsc:ScheduleOfPercentageOfPropertyAndEquipmentNetTableTextBlock>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i62f046dcd2034c77b0a5beb5ec3cff59_D20230101-20230331"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83Ni9mcmFnOjc0MzQwNjU5ZmJiZjQ5ZWVhYTUwYjhlZjg3YTgzZWE4L3RhYmxlOjJkOGUyOWYwMzM4YzQxNGNiMmYyZmEzNDU5M2NjOTFjL3RhYmxlcmFuZ2U6MmQ4ZTI5ZjAzMzhjNDE0Y2IyZjJmYTM0NTkzY2M5MWNfMS0xLTEtMS0xMDAwMzY_5092ec4b-70e1-462b-8593-366b1746a3ca"
      unitRef="number">0.14</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i6f4fecba0c8a4e1786a0301a0c8ea540_D20220101-20221231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjZkOWE4ZDFhYjFmNTQ1NDg4NWE5OGFhZjllNjA4NzIyL3NlYzo2ZDlhOGQxYWIxZjU0NTQ4ODVhOThhYWY5ZTYwODcyMl83Ni9mcmFnOjc0MzQwNjU5ZmJiZjQ5ZWVhYTUwYjhlZjg3YTgzZWE4L3RhYmxlOjJkOGUyOWYwMzM4YzQxNGNiMmYyZmEzNDU5M2NjOTFjL3RhYmxlcmFuZ2U6MmQ4ZTI5ZjAzMzhjNDE0Y2IyZjJmYTM0NTkzY2M5MWNfMS0zLTEtMS0xMDAwMzY_8a472481-2793-4a8f-a9ca-13ed5b3377d9"
      unitRef="number">0.13</us-gaap:ConcentrationRiskPercentage1>
</xbrl>
