<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:dei="http://xbrl.sec.gov/dei/2023"
  xmlns:hstm="http://www.healthstream.com/20230630"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:srt="http://fasb.org/srt/2023"
  xmlns:thunderdome="http://www.RDGFilings.com"
  xmlns:us-gaap="http://fasb.org/us-gaap/2023"
  xmlns:utr="http://www.xbrl.org/2009/utr"
  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="hstm-20230630.xsd" xlink:type="simple"/>
    <context id="d_2023-01-01_2023-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="i_2023-07-24">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <instant>2023-07-24</instant>
        </period>
    </context>
    <context id="i_2023-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="i_2022-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelatedIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelatedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelatedIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelatedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OtherIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OtherIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2023-04-01_2023-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <startDate>2023-04-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-04-01_2022-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <startDate>2022-04-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="i_2022-12-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockIncludingAdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockIncludingAdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="d_2023-01-01_2023-03-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-03-31</endDate>
        </period>
    </context>
    <context id="i_2023-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockIncludingAdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="i_2023-03-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="i_2023-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="i_2023-03-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <instant>2023-03-31</instant>
        </period>
    </context>
    <context id="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockIncludingAdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-04-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-04-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-04-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="i_2023-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockIncludingAdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="i_2023-06-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="i_2023-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="i_2021-12-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockIncludingAdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="i_2021-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockIncludingAdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="d_2022-01-01_2022-03-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-03-31</endDate>
        </period>
    </context>
    <context id="i_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockIncludingAdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-03-31</instant>
        </period>
    </context>
    <context id="i_2022-03-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="i_2022-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</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="i_2022-03-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <instant>2022-03-31</instant>
        </period>
    </context>
    <context id="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockIncludingAdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-04-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-04-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-04-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="i_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockIncludingAdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-06-30</instant>
        </period>
    </context>
    <context id="i_2022-06-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-06-30</instant>
        </period>
    </context>
    <context id="i_2022-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-06-30</instant>
        </period>
    </context>
    <context id="i_2022-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
        </entity>
        <period>
            <instant>2022-06-30</instant>
        </period>
    </context>
    <context id="d_2023-04-01_2023-06-30_ProductOrServiceAxis-SubscriptionServicesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">hstm:SubscriptionServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-04-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-04-01_2022-06-30_ProductOrServiceAxis-SubscriptionServicesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">hstm:SubscriptionServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-04-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_ProductOrServiceAxis-SubscriptionServicesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">hstm:SubscriptionServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30_ProductOrServiceAxis-SubscriptionServicesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">hstm:SubscriptionServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-04-01_2023-06-30_ProductOrServiceAxis-ProfessionalServicesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">hstm:ProfessionalServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-04-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-04-01_2022-06-30_ProductOrServiceAxis-ProfessionalServicesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">hstm:ProfessionalServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-04-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_ProductOrServiceAxis-ProfessionalServicesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">hstm:ProfessionalServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30_ProductOrServiceAxis-ProfessionalServicesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">hstm:ProfessionalServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="i_2023-06-30_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2024-07-01">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:typedMember dimension="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis">
                    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>2024-07-01</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>
                </xbrldi:typedMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_DividendsAxis-FirstQuarterDividendsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DividendsAxis">hstm:FirstQuarterDividendsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="i_2023-06-30_DividendsAxis-FirstQuarterDividendsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DividendsAxis">hstm:FirstQuarterDividendsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_DividendsAxis-SecondQuarterDividendsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DividendsAxis">hstm:SecondQuarterDividendsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="i_2023-06-30_DividendsAxis-SecondQuarterDividendsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DividendsAxis">hstm:SecondQuarterDividendsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="d_2023-07-24_2023-07-24_SubsequentEventTypeAxis-SubsequentEventMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-07-24</startDate>
            <endDate>2023-07-24</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_AwardTypeAxis-RestrictedStockUnitsRSUMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30_AwardTypeAxis-RestrictedStockUnitsRSUMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">hstm:PerformanceBasedRestrictedStockUnitsRsusMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-TwoThousandTwentyThreePerformanceMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">hstm:PerformanceBasedRestrictedStockUnitsRsusMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">hstm:TwoThousandTwentyThreePerformanceMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-NotBasedOn2023PerformanceMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">hstm:PerformanceBasedRestrictedStockUnitsRsusMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">hstm:NotBasedOn2023PerformanceMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">hstm:PerformanceBasedRestrictedStockUnitsRsusMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-TwoThousandTwentyThreePerformanceMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">hstm:PerformanceBasedRestrictedStockUnitsRsusMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">hstm:TwoThousandTwentyThreePerformanceMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-NotBasedOn2023PerformanceMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">hstm:PerformanceBasedRestrictedStockUnitsRsusMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VestingAxis">hstm:NotBasedOn2023PerformanceMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-04-01_2023-06-30_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-04-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-04-01_2022-06-30_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-04-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-04-01_2023-06-30_IncomeStatementLocationAxis-ProductDevelopmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">hstm:ProductDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-04-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-04-01_2022-06-30_IncomeStatementLocationAxis-ProductDevelopmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">hstm:ProductDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-04-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_IncomeStatementLocationAxis-ProductDevelopmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">hstm:ProductDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30_IncomeStatementLocationAxis-ProductDevelopmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">hstm:ProductDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-04-01_2023-06-30_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-04-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-04-01_2022-06-30_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-04-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-04-01_2023-06-30_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-04-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-04-01_2022-06-30_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-04-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-06-30_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-06-30</endDate>
        </period>
    </context>
    <context id="i_2023-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FinancialInstrumentAxis-USTreasurySecuritiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FinancialInstrumentAxis-USTreasurySecuritiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</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="d_2022-12-31_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">hstm:ElectronicEducationDocumentationSystemLlcMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-12-31</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">hstm:ElectronicEducationDocumentationSystemLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-DevelopedTechnologyRightsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">hstm:ElectronicEducationDocumentationSystemLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">hstm:ElectronicEducationDocumentationSystemLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">hstm:ElectronicEducationDocumentationSystemLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">hstm:ElectronicEducationDocumentationSystemLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">hstm:ElectronicEducationDocumentationSystemLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-DevelopedTechnologyRightsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">hstm:ElectronicEducationDocumentationSystemLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">hstm:ElectronicEducationDocumentationSystemLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-06-30_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">hstm:ElectronicEducationDocumentationSystemLlcMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-06-30</endDate>
        </period>
    </context>
    <context id="i_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">hstm:ThirdAmendmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-10-28</instant>
        </period>
    </context>
    <context id="i_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_ShortTermDebtTypeAxis-SwingLineSubfacilityMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">hstm:ThirdAmendmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ShortTermDebtTypeAxis">hstm:SwingLineSubfacilityMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-10-28</instant>
        </period>
    </context>
    <context id="i_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_ShortTermDebtTypeAxis-LetterOfCreditSubfacilityMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">hstm:ThirdAmendmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ShortTermDebtTypeAxis">hstm:LetterOfCreditSubfacilityMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-10-28</instant>
        </period>
    </context>
    <context id="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_VariableRateAxis-FederalFundsEffectiveSwapRateMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">hstm:ThirdAmendmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:FederalFundsEffectiveSwapRateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-10-28</startDate>
            <endDate>2020-10-28</endDate>
        </period>
    </context>
    <context id="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_VariableRateAxis-BaseRateMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">hstm:ThirdAmendmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:BaseRateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-10-28</startDate>
            <endDate>2020-10-28</endDate>
        </period>
    </context>
    <context id="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_RangeAxis-MinimumMember_VariableRateAxis-EurodollarMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">hstm:ThirdAmendmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:EurodollarMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-10-28</startDate>
            <endDate>2020-10-28</endDate>
        </period>
    </context>
    <context id="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_RangeAxis-MaximumMember_VariableRateAxis-EurodollarMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">hstm:ThirdAmendmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:EurodollarMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-10-28</startDate>
            <endDate>2020-10-28</endDate>
        </period>
    </context>
    <context id="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_RangeAxis-MinimumMember_VariableRateAxis-BaseRateMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">hstm:ThirdAmendmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:BaseRateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-10-28</startDate>
            <endDate>2020-10-28</endDate>
        </period>
    </context>
    <context id="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_RangeAxis-MaximumMember_VariableRateAxis-BaseRateMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">hstm:ThirdAmendmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:BaseRateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-10-28</startDate>
            <endDate>2020-10-28</endDate>
        </period>
    </context>
    <context id="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-10-28</startDate>
            <endDate>2020-10-28</endDate>
        </period>
    </context>
    <context id="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-10-28</startDate>
            <endDate>2020-10-28</endDate>
        </period>
    </context>
    <context id="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-10-28</startDate>
            <endDate>2020-10-28</endDate>
        </period>
    </context>
    <context id="i_2023-06-30_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001095565</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">hstm:TruistBankMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <unit id="Share">
        <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="Pure">
        <measure>pure</measure>
    </unit>
    <unit id="Month">
        <measure>utr:M</measure>
    </unit>
    <unit id="NonApplicable">
        <measure>thunderdome:item</measure>
    </unit>
    <unit id="Year">
        <measure>utr:Y</measure>
    </unit>
    <dei:EntityCentralIndexKey
      contextRef="d_2023-01-01_2023-06-30"
      id="thunderdome-EntityCentralIndexKey">0001095565</dei:EntityCentralIndexKey>
    <dei:EntityRegistrantName
      contextRef="d_2023-01-01_2023-06-30"
      id="thunderdome-EntityRegistrantName">HEALTHSTREAM INC</dei:EntityRegistrantName>
    <dei:AmendmentFlag contextRef="d_2023-01-01_2023-06-30">false</dei:AmendmentFlag>
    <dei:CurrentFiscalYearEndDate contextRef="d_2023-01-01_2023-06-30">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentFiscalPeriodFocus contextRef="d_2023-01-01_2023-06-30">Q2</dei:DocumentFiscalPeriodFocus>
    <dei:DocumentFiscalYearFocus contextRef="d_2023-01-01_2023-06-30">2023</dei:DocumentFiscalYearFocus>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99977980"
      unitRef="USD">625000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99977981"
      unitRef="USD">544000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99985396"
      unitRef="USD">22364000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c99985397"
      unitRef="USD">20280000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99977996"
      unitRef="USD">115618000</us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization>
    <us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99977997"
      unitRef="USD">105025000</us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2023-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c99978004"
      unitRef="USD">52807000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c99978005"
      unitRef="USD">48552000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2023-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember"
      decimals="-3"
      id="c99978008"
      unitRef="USD">15936000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember"
      decimals="-3"
      id="c99978009"
      unitRef="USD">12818000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:CommonStockNoParValue
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978050"
      unitRef="USDPerShare">0</us-gaap:CommonStockNoParValue>
    <us-gaap:CommonStockNoParValue
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978051"
      unitRef="USDPerShare">0</us-gaap:CommonStockNoParValue>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2023-06-30"
      decimals="-6"
      id="c99978044"
      unitRef="Share">75000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2022-12-31"
      decimals="-6"
      id="c99978045"
      unitRef="Share">75000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978046"
      unitRef="Share">30686000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockOtherSharesOutstanding
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978048"
      unitRef="Share">30686000</us-gaap:CommonStockOtherSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978047"
      unitRef="Share">30579000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockOtherSharesOutstanding
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978049"
      unitRef="Share">30579000</us-gaap:CommonStockOtherSharesOutstanding>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="d_2023-01-01_2023-03-31"
      decimals="INF"
      id="c100034499"
      unitRef="USDPerShare">0.025</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="d_2023-04-01_2023-06-30"
      decimals="INF"
      id="c100034504"
      unitRef="USDPerShare">0.025</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-5"
      id="c99978453"
      unitRef="USD">400000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:RevenueRemainingPerformanceObligationPercentage
      contextRef="i_2023-06-30"
      decimals="2"
      id="c99978463"
      unitRef="Pure">0.44</us-gaap:RevenueRemainingPerformanceObligationPercentage>
    <us-gaap:DividendPayableDateToBePaidDayMonthAndYear
      contextRef="d_2023-01-01_2023-06-30_DividendsAxis-FirstQuarterDividendsMember"
      id="c100028096">2023-04-28</us-gaap:DividendPayableDateToBePaidDayMonthAndYear>
    <us-gaap:DividendPayableDateToBePaidDayMonthAndYear
      contextRef="d_2023-01-01_2023-06-30_DividendsAxis-SecondQuarterDividendsMember"
      id="c100028101">2023-06-23</us-gaap:DividendPayableDateToBePaidDayMonthAndYear>
    <us-gaap:DividendPayableDateToBePaidDayMonthAndYear
      contextRef="d_2023-07-24_2023-07-24_SubsequentEventTypeAxis-SubsequentEventMember"
      id="c99978529">2023-09-29</us-gaap:DividendPayableDateToBePaidDayMonthAndYear>
    <us-gaap:DividendsPayableDateOfRecordDayMonthAndYear
      contextRef="d_2023-07-24_2023-07-24_SubsequentEventTypeAxis-SubsequentEventMember"
      id="c100027984">2023-09-18</us-gaap:DividendsPayableDateOfRecordDayMonthAndYear>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      id="c99978542">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      id="c99979401">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSale
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978643"
      unitRef="USD">0</us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSale>
    <us-gaap:LineOfCredit
      contextRef="i_2023-06-30_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember"
      decimals="-3"
      id="c99978722"
      unitRef="USD">0</us-gaap:LineOfCredit>
    <dei:DocumentType contextRef="d_2023-01-01_2023-06-30">10-Q</dei:DocumentType>
    <dei:DocumentQuarterlyReport contextRef="d_2023-01-01_2023-06-30">true</dei:DocumentQuarterlyReport>
    <dei:DocumentPeriodEndDate contextRef="d_2023-01-01_2023-06-30">2023-06-30</dei:DocumentPeriodEndDate>
    <dei:DocumentTransitionReport contextRef="d_2023-01-01_2023-06-30">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber contextRef="d_2023-01-01_2023-06-30">000-27701</dei:EntityFileNumber>
    <dei:EntityIncorporationStateCountryCode contextRef="d_2023-01-01_2023-06-30">TN</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber contextRef="d_2023-01-01_2023-06-30">62-1443555</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1 contextRef="d_2023-01-01_2023-06-30">500 11th Avenue North, Suite 1000</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown contextRef="d_2023-01-01_2023-06-30">Nashville</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince contextRef="d_2023-01-01_2023-06-30">TN</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode contextRef="d_2023-01-01_2023-06-30">37203</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode contextRef="d_2023-01-01_2023-06-30">615</dei:CityAreaCode>
    <dei:LocalPhoneNumber contextRef="d_2023-01-01_2023-06-30">301-3100</dei:LocalPhoneNumber>
    <dei:Security12bTitle contextRef="d_2023-01-01_2023-06-30">Common Stock (Par Value $0.00)</dei:Security12bTitle>
    <dei:TradingSymbol contextRef="d_2023-01-01_2023-06-30">HSTM</dei:TradingSymbol>
    <dei:SecurityExchangeName contextRef="d_2023-01-01_2023-06-30">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityCurrentReportingStatus contextRef="d_2023-01-01_2023-06-30">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent contextRef="d_2023-01-01_2023-06-30">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory contextRef="d_2023-01-01_2023-06-30">Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntityEmergingGrowthCompany contextRef="d_2023-01-01_2023-06-30">false</dei:EntityEmergingGrowthCompany>
    <dei:EntitySmallBusiness contextRef="d_2023-01-01_2023-06-30">false</dei:EntitySmallBusiness>
    <dei:EntityShellCompany contextRef="d_2023-01-01_2023-06-30">false</dei:EntityShellCompany>
    <dei:EntityCommonStockSharesOutstanding contextRef="i_2023-07-24" decimals="INF" unitRef="Share">30686568</dei:EntityCommonStockSharesOutstanding>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99977974"
      unitRef="USD">25805000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99977975"
      unitRef="USD">46023000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99977976"
      unitRef="USD">30158000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99977977"
      unitRef="USD">7885000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i_2023-06-30"
      decimals="-4"
      id="c99977978"
      unitRef="USD">35010000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c99977979"
      unitRef="USD">36730000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99977982"
      unitRef="USD">5869000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c99977983"
      unitRef="USD">5980000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:PrepaidRoyalties
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99977984"
      unitRef="USD">9881000</us-gaap:PrepaidRoyalties>
    <us-gaap:PrepaidRoyalties
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99977985"
      unitRef="USD">9071000</us-gaap:PrepaidRoyalties>
    <us-gaap:OtherAssetsCurrent
      contextRef="i_2023-06-30"
      decimals="-4"
      id="c99977986"
      unitRef="USD">11290000</us-gaap:OtherAssetsCurrent>
    <us-gaap:OtherAssetsCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99977987"
      unitRef="USD">8688000</us-gaap:OtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99977988"
      unitRef="USD">118013000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99977989"
      unitRef="USD">114377000</us-gaap:AssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99977990"
      unitRef="USD">14461000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99977991"
      unitRef="USD">15483000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="i_2023-06-30"
      decimals="-4"
      id="c99977994"
      unitRef="USD">38950000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99977995"
      unitRef="USD">37118000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99977998"
      unitRef="USD">21477000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99977999"
      unitRef="USD">22759000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:Goodwill
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978000"
      unitRef="USD">191346000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978001"
      unitRef="USD">192398000</us-gaap:Goodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i_2023-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c99978002"
      unitRef="USD">58925000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c99978003"
      unitRef="USD">61269000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i_2023-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember"
      decimals="-3"
      id="c99978006"
      unitRef="USD">16439000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember"
      decimals="-3"
      id="c99978007"
      unitRef="USD">20284000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978010"
      unitRef="USD">383000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978011"
      unitRef="USD">383000</us-gaap:DeferredIncomeTaxAssetsNet>
    <hstm:ContractWithCustomerAssetSalesCommissionNoncurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978012"
      unitRef="USD">28709000</hstm:ContractWithCustomerAssetSalesCommissionNoncurrent>
    <hstm:ContractWithCustomerAssetSalesCommissionNoncurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978013"
      unitRef="USD">28344000</hstm:ContractWithCustomerAssetSalesCommissionNoncurrent>
    <us-gaap:InvestmentsInAffiliatesSubsidiariesAssociatesAndJointVentures
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978014"
      unitRef="USD">4277000</us-gaap:InvestmentsInAffiliatesSubsidiariesAssociatesAndJointVentures>
    <us-gaap:InvestmentsInAffiliatesSubsidiariesAssociatesAndJointVentures
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978015"
      unitRef="USD">4518000</us-gaap:InvestmentsInAffiliatesSubsidiariesAssociatesAndJointVentures>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978016"
      unitRef="USD">494000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978017"
      unitRef="USD">808000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978018"
      unitRef="USD">493474000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978019"
      unitRef="USD">497741000</us-gaap:Assets>
    <us-gaap:AccountsPayableAndAccruedLiabilitiesCurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978022"
      unitRef="USD">22147000</us-gaap:AccountsPayableAndAccruedLiabilitiesCurrent>
    <us-gaap:AccountsPayableAndAccruedLiabilitiesCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978023"
      unitRef="USD">32301000</us-gaap:AccountsPayableAndAccruedLiabilitiesCurrent>
    <us-gaap:AccruedRoyaltiesCurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978024"
      unitRef="USD">5236000</us-gaap:AccruedRoyaltiesCurrent>
    <us-gaap:AccruedRoyaltiesCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978025"
      unitRef="USD">5443000</us-gaap:AccruedRoyaltiesCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978026"
      unitRef="USD">81768000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978027"
      unitRef="USD">79469000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978028"
      unitRef="USD">109151000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978029"
      unitRef="USD">117213000</us-gaap:LiabilitiesCurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2023-06-30"
      decimals="-4"
      id="c99978030"
      unitRef="USD">17480000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978031"
      unitRef="USD">17996000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:ContractWithCustomerLiabilityNoncurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978032"
      unitRef="USD">2256000</us-gaap:ContractWithCustomerLiabilityNoncurrent>
    <us-gaap:ContractWithCustomerLiabilityNoncurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978033"
      unitRef="USD">2937000</us-gaap:ContractWithCustomerLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978034"
      unitRef="USD">21801000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978035"
      unitRef="USD">23321000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978036"
      unitRef="USD">2167000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c99978037"
      unitRef="USD">2210000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:CommonStocksIncludingAdditionalPaidInCapital
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978042"
      unitRef="USD">256073000</us-gaap:CommonStocksIncludingAdditionalPaidInCapital>
    <us-gaap:CommonStocksIncludingAdditionalPaidInCapital
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978043"
      unitRef="USD">254832000</us-gaap:CommonStocksIncludingAdditionalPaidInCapital>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978052"
      unitRef="USD">85435000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978053"
      unitRef="USD">80213000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978054"
      unitRef="USD">-889000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978055"
      unitRef="USD">-981000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978056"
      unitRef="USD">340619000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978057"
      unitRef="USD">334064000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978058"
      unitRef="USD">493474000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978059"
      unitRef="USD">497741000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978068"
      unitRef="USD">69198000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978069"
      unitRef="USD">65638000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978070"
      unitRef="USD">138144000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978071"
      unitRef="USD">131005000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978073"
      unitRef="USD">23567000</us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization>
    <us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978074"
      unitRef="USD">22234000</us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization>
    <us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978075"
      unitRef="USD">47424000</us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization>
    <us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978076"
      unitRef="USD">44232000</us-gaap:CostOfGoodsAndServiceExcludingDepreciationDepletionAndAmortization>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978077"
      unitRef="USD">11031000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978078"
      unitRef="USD">10583000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978079"
      unitRef="USD">22711000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978080"
      unitRef="USD">20995000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978081"
      unitRef="USD">11307000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978082"
      unitRef="USD">10869000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978083"
      unitRef="USD">23035000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978084"
      unitRef="USD">21287000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:OtherGeneralAndAdministrativeExpense
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978085"
      unitRef="USD">9063000</us-gaap:OtherGeneralAndAdministrativeExpense>
    <us-gaap:OtherGeneralAndAdministrativeExpense
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978086"
      unitRef="USD">9579000</us-gaap:OtherGeneralAndAdministrativeExpense>
    <us-gaap:OtherGeneralAndAdministrativeExpense
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978087"
      unitRef="USD">17927000</us-gaap:OtherGeneralAndAdministrativeExpense>
    <us-gaap:OtherGeneralAndAdministrativeExpense
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-4"
      id="c99978088"
      unitRef="USD">18760000</us-gaap:OtherGeneralAndAdministrativeExpense>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978089"
      unitRef="USD">10222000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-4"
      id="c99978090"
      unitRef="USD">9420000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978091"
      unitRef="USD">20148000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978092"
      unitRef="USD">18742000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:CostsAndExpenses
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-4"
      id="c99978093"
      unitRef="USD">65190000</us-gaap:CostsAndExpenses>
    <us-gaap:CostsAndExpenses
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978094"
      unitRef="USD">62685000</us-gaap:CostsAndExpenses>
    <us-gaap:CostsAndExpenses
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978095"
      unitRef="USD">131245000</us-gaap:CostsAndExpenses>
    <us-gaap:CostsAndExpenses
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978096"
      unitRef="USD">124016000</us-gaap:CostsAndExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978097"
      unitRef="USD">4008000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978098"
      unitRef="USD">2953000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978099"
      unitRef="USD">6899000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978100"
      unitRef="USD">6989000</us-gaap:OperatingIncomeLoss>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978101"
      unitRef="USD">492000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978102"
      unitRef="USD">679000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978103"
      unitRef="USD">742000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:NonoperatingIncomeExpense
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978104"
      unitRef="USD">402000</us-gaap:NonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-5"
      id="c99978105"
      unitRef="USD">4500000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978106"
      unitRef="USD">3632000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978107"
      unitRef="USD">7641000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978108"
      unitRef="USD">7391000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978109"
      unitRef="USD">367000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978110"
      unitRef="USD">549000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978111"
      unitRef="USD">885000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978112"
      unitRef="USD">1415000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978113"
      unitRef="USD">4133000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978114"
      unitRef="USD">3083000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978115"
      unitRef="USD">6756000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978116"
      unitRef="USD">5976000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2023-04-01_2023-06-30"
      decimals="INF"
      id="c99978118"
      unitRef="USDPerShare">0.13</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2022-04-01_2022-06-30"
      decimals="INF"
      id="c99978119"
      unitRef="USDPerShare">0.10</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2023-01-01_2023-06-30"
      decimals="INF"
      id="c99978120"
      unitRef="USDPerShare">0.22</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2022-01-01_2022-06-30"
      decimals="INF"
      id="c99978121"
      unitRef="USDPerShare">0.19</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2023-04-01_2023-06-30"
      decimals="INF"
      id="c99978122"
      unitRef="USDPerShare">0.13</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2022-04-01_2022-06-30"
      decimals="INF"
      id="c99978123"
      unitRef="USDPerShare">0.10</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2023-01-01_2023-06-30"
      decimals="INF"
      id="c99978124"
      unitRef="USDPerShare">0.22</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2022-01-01_2022-06-30"
      decimals="INF"
      id="c99978125"
      unitRef="USDPerShare">0.19</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978127"
      unitRef="Share">30684000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978128"
      unitRef="Share">30491000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978129"
      unitRef="Share">30638000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978130"
      unitRef="Share">30723000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978131"
      unitRef="Share">30775000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978132"
      unitRef="Share">30512000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978133"
      unitRef="Share">30717000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978134"
      unitRef="Share">30744000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="d_2023-04-01_2023-06-30"
      decimals="INF"
      id="c99978135"
      unitRef="USDPerShare">0.025</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="d_2022-04-01_2022-06-30"
      decimals="INF"
      id="c99978136"
      unitRef="USDPerShare">0</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="d_2023-01-01_2023-06-30"
      decimals="INF"
      id="c99978137"
      unitRef="USDPerShare">0.050</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="d_2022-01-01_2022-06-30"
      decimals="INF"
      id="c99978138"
      unitRef="USDPerShare">0</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978147"
      unitRef="USD">4133000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978148"
      unitRef="USD">3083000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978149"
      unitRef="USD">6756000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978150"
      unitRef="USD">5976000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978152"
      unitRef="USD">177000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978153"
      unitRef="USD">-782000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978154"
      unitRef="USD">144000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978155"
      unitRef="USD">-505000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-4"
      id="c99978156"
      unitRef="USD">-50000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978157"
      unitRef="USD">2000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978158"
      unitRef="USD">-52000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978159"
      unitRef="USD">-3000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978160"
      unitRef="USD">127000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-4"
      id="c99978161"
      unitRef="USD">-780000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978162"
      unitRef="USD">92000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978163"
      unitRef="USD">-508000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-4"
      id="c99978164"
      unitRef="USD">4260000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978165"
      unitRef="USD">2303000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978166"
      unitRef="USD">6848000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978167"
      unitRef="USD">5468000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978183"
      unitRef="Share">30579000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978184"
      unitRef="USD">254832000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978185"
      unitRef="USD">80213000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978186"
      unitRef="USD">-981000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978187"
      unitRef="USD">334064000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978189"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978190"
      unitRef="USD">2623000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978191"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-03-31"
      decimals="-3"
      id="c99978192"
      unitRef="USD">2623000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978194"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978195"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978196"
      unitRef="USD">-35000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-03-31"
      decimals="-3"
      id="c99978197"
      unitRef="USD">-35000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:DividendsCommonStock
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      id="c99978199"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:DividendsCommonStock
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978200"
      unitRef="USD">767000</us-gaap:DividendsCommonStock>
    <us-gaap:DividendsCommonStock
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      id="c99978201"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:DividendsCommonStock
      contextRef="d_2023-01-01_2023-03-31"
      decimals="-3"
      id="c99978202"
      unitRef="USD">767000</us-gaap:DividendsCommonStock>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978209"
      unitRef="USD">945000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978210"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978211"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-01-01_2023-03-31"
      decimals="-3"
      id="c99978212"
      unitRef="USD">945000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978213"
      unitRef="Share">103000</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978214"
      unitRef="USD">-791000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978215"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-01-01_2023-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978216"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-01-01_2023-03-31"
      decimals="-3"
      id="c99978217"
      unitRef="USD">-791000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2023-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978218"
      unitRef="Share">30682000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978219"
      unitRef="USD">254986000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978220"
      unitRef="USD">82069000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978221"
      unitRef="USD">-1016000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-03-31"
      decimals="-3"
      id="c99978222"
      unitRef="USD">336039000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978224"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978225"
      unitRef="USD">4133000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978226"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978227"
      unitRef="USD">4133000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978229"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978230"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978231"
      unitRef="USD">127000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978232"
      unitRef="USD">127000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:DividendsCommonStock
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978234"
      unitRef="USD">-0</us-gaap:DividendsCommonStock>
    <us-gaap:DividendsCommonStock
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978235"
      unitRef="USD">767000</us-gaap:DividendsCommonStock>
    <us-gaap:DividendsCommonStock
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978236"
      unitRef="USD">-0</us-gaap:DividendsCommonStock>
    <us-gaap:DividendsCommonStock
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978237"
      unitRef="USD">767000</us-gaap:DividendsCommonStock>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978244"
      unitRef="USD">1093000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978245"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978246"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978247"
      unitRef="USD">1093000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978248"
      unitRef="Share">4000</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978249"
      unitRef="USD">-6000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978250"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-04-01_2023-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978251"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978252"
      unitRef="USD">-6000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2023-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978253"
      unitRef="Share">30686000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978254"
      unitRef="USD">256073000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978255"
      unitRef="USD">85435000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978256"
      unitRef="USD">-889000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978257"
      unitRef="USD">340619000</us-gaap:StockholdersEquity>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978273"
      unitRef="Share">31327000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978274"
      unitRef="USD">270791000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978275"
      unitRef="USD">68122000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978276"
      unitRef="USD">106000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31"
      decimals="-3"
      id="c99978277"
      unitRef="USD">339019000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978279"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978280"
      unitRef="USD">2893000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978281"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-03-31"
      decimals="-3"
      id="c99978282"
      unitRef="USD">2893000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978284"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978285"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978286"
      unitRef="USD">272000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-03-31"
      decimals="-3"
      id="c99978287"
      unitRef="USD">272000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978289"
      unitRef="USD">774000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978290"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978291"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-01-01_2022-03-31"
      decimals="-3"
      id="c99978292"
      unitRef="USD">774000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978293"
      unitRef="Share">83000</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978294"
      unitRef="USD">-497000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978295"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978296"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-01-01_2022-03-31"
      decimals="-3"
      id="c99978297"
      unitRef="USD">-497000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978298"
      unitRef="Share">892000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978299"
      unitRef="USD">19889000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978300"
      unitRef="USD">-0</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="d_2022-01-01_2022-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978301"
      unitRef="USD">-0</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="d_2022-01-01_2022-03-31"
      decimals="-3"
      id="c99978302"
      unitRef="USD">19889000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978303"
      unitRef="Share">30518000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-03-31_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978304"
      unitRef="USD">251179000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978305"
      unitRef="USD">71015000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978306"
      unitRef="USD">378000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-03-31"
      decimals="-3"
      id="c99978307"
      unitRef="USD">322572000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978309"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978310"
      unitRef="USD">3083000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978311"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978312"
      unitRef="USD">3083000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978314"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978315"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-4"
      id="c99978316"
      unitRef="USD">-780000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-4"
      id="c99978317"
      unitRef="USD">-780000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:StockIssuedDuringPeriodSharesAcquisitions
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978318"
      unitRef="Share">209000</us-gaap:StockIssuedDuringPeriodSharesAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978319"
      unitRef="USD">4084000</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978320"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978321"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978322"
      unitRef="USD">4084000</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978324"
      unitRef="USD">917000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978325"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978326"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978327"
      unitRef="USD">917000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978328"
      unitRef="Share">2000</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978329"
      unitRef="USD">-1000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978330"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978331"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978332"
      unitRef="USD">-1000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978333"
      unitRef="Share">159000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978334"
      unitRef="USD">3143000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978335"
      unitRef="USD">-0</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="d_2022-04-01_2022-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978336"
      unitRef="USD">-0</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978337"
      unitRef="USD">3143000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-4"
      id="c99978338"
      unitRef="Share">30570000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-06-30_StatementEquityComponentsAxis-CommonStockIncludingAdditionalPaidInCapitalMember"
      decimals="-3"
      id="c99978339"
      unitRef="USD">253036000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c99978340"
      unitRef="USD">74098000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c99978341"
      unitRef="USD">-402000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-06-30"
      decimals="-3"
      id="c99978342"
      unitRef="USD">326732000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978348"
      unitRef="USD">6756000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978349"
      unitRef="USD">5976000</us-gaap:NetIncomeLoss>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978351"
      unitRef="USD">20148000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978352"
      unitRef="USD">18742000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978353"
      unitRef="USD">2038000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978354"
      unitRef="USD">1691000</us-gaap:ShareBasedCompensation>
    <us-gaap:AmortizationOfDeferredSalesCommissions
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978355"
      unitRef="USD">5464000</us-gaap:AmortizationOfDeferredSalesCommissions>
    <us-gaap:AmortizationOfDeferredSalesCommissions
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978356"
      unitRef="USD">5029000</us-gaap:AmortizationOfDeferredSalesCommissions>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978357"
      unitRef="USD">371000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978358"
      unitRef="USD">444000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-4"
      id="c99978359"
      unitRef="USD">-490000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978360"
      unitRef="USD">1089000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:GainLossOnDispositionOfAssets
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978361"
      unitRef="USD">-0</us-gaap:GainLossOnDispositionOfAssets>
    <us-gaap:GainLossOnDispositionOfAssets
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978362"
      unitRef="USD">25000</us-gaap:GainLossOnDispositionOfAssets>
    <hstm:GainLossOnNonMarketableEquityInvestments
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978363"
      unitRef="USD">-241000</hstm:GainLossOnNonMarketableEquityInvestments>
    <hstm:GainLossOnNonMarketableEquityInvestments
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-5"
      id="c99978364"
      unitRef="USD">-500000</hstm:GainLossOnNonMarketableEquityInvestments>
    <hstm:ChangeInFairValueOfNonMarketableEquityInvestments
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978365"
      unitRef="USD">0</hstm:ChangeInFairValueOfNonMarketableEquityInvestments>
    <hstm:ChangeInFairValueOfNonMarketableEquityInvestments
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978366"
      unitRef="USD">-943000</hstm:ChangeInFairValueOfNonMarketableEquityInvestments>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978367"
      unitRef="USD">342000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978368"
      unitRef="USD">-37000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:IncreaseDecreaseInReceivables
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-4"
      id="c99978370"
      unitRef="USD">-1460000</us-gaap:IncreaseDecreaseInReceivables>
    <us-gaap:IncreaseDecreaseInReceivables
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978371"
      unitRef="USD">2000</us-gaap:IncreaseDecreaseInReceivables>
    <us-gaap:IncreaseDecreaseInPrepaidRoyalties
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-4"
      id="c99978372"
      unitRef="USD">810000</us-gaap:IncreaseDecreaseInPrepaidRoyalties>
    <us-gaap:IncreaseDecreaseInPrepaidRoyalties
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978373"
      unitRef="USD">521000</us-gaap:IncreaseDecreaseInPrepaidRoyalties>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978374"
      unitRef="USD">2408000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978375"
      unitRef="USD">651000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <hstm:IncreaseDecreaseInDeferredCommissions
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-4"
      id="c99978376"
      unitRef="USD">5830000</hstm:IncreaseDecreaseInDeferredCommissions>
    <hstm:IncreaseDecreaseInDeferredCommissions
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978377"
      unitRef="USD">6192000</hstm:IncreaseDecreaseInDeferredCommissions>
    <us-gaap:IncreaseDecreaseInOtherOperatingAssets
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978378"
      unitRef="USD">-315000</us-gaap:IncreaseDecreaseInOtherOperatingAssets>
    <us-gaap:IncreaseDecreaseInOtherOperatingAssets
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978379"
      unitRef="USD">-52000</us-gaap:IncreaseDecreaseInOtherOperatingAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayableAndAccruedLiabilities
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978380"
      unitRef="USD">-2835000</us-gaap:IncreaseDecreaseInAccountsPayableAndAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccountsPayableAndAccruedLiabilities
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978381"
      unitRef="USD">-2644000</us-gaap:IncreaseDecreaseInAccountsPayableAndAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInRoyaltiesPayable
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978382"
      unitRef="USD">-207000</us-gaap:IncreaseDecreaseInRoyaltiesPayable>
    <us-gaap:IncreaseDecreaseInRoyaltiesPayable
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978383"
      unitRef="USD">-342000</us-gaap:IncreaseDecreaseInRoyaltiesPayable>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978384"
      unitRef="USD">1618000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978385"
      unitRef="USD">5741000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978386"
      unitRef="USD">25489000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978387"
      unitRef="USD">27981000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978389"
      unitRef="USD">6621000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978390"
      unitRef="USD">4009000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-7"
      id="c99978391"
      unitRef="USD">10000000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978392"
      unitRef="USD">5025000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978393"
      unitRef="USD">31983000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:PaymentsToAcquireMarketableSecurities
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978394"
      unitRef="USD">2024000</us-gaap:PaymentsToAcquireMarketableSecurities>
    <us-gaap:PaymentsForSoftware
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978395"
      unitRef="USD">13309000</us-gaap:PaymentsForSoftware>
    <us-gaap:PaymentsForSoftware
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978396"
      unitRef="USD">11817000</us-gaap:PaymentsForSoftware>
    <us-gaap:ProceedsFromSaleOfPropertyPlantAndEquipment
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978397"
      unitRef="USD">0</us-gaap:ProceedsFromSaleOfPropertyPlantAndEquipment>
    <us-gaap:ProceedsFromSaleOfPropertyPlantAndEquipment
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978398"
      unitRef="USD">26000</us-gaap:ProceedsFromSaleOfPropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978399"
      unitRef="USD">1382000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978400"
      unitRef="USD">1181000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978401"
      unitRef="USD">-43295000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-4"
      id="c99978402"
      unitRef="USD">-13980000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978404"
      unitRef="USD">797000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978405"
      unitRef="USD">498000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978406"
      unitRef="USD">-0</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978407"
      unitRef="USD">23137000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978408"
      unitRef="USD">1534000</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978409"
      unitRef="USD">-0</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978410"
      unitRef="USD">-2331000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978411"
      unitRef="USD">-23635000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978412"
      unitRef="USD">-81000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978413"
      unitRef="USD">-55000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978414"
      unitRef="USD">-20218000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978415"
      unitRef="USD">-9689000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978416"
      unitRef="USD">46023000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2021-12-31"
      decimals="-3"
      id="c99978417"
      unitRef="USD">46905000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978418"
      unitRef="USD">25805000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2022-06-30"
      decimals="-3"
      id="c99978419"
      unitRef="USD">37216000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:BusinessDescriptionAndBasisOfPresentationTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416365">
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;1.&lt;/em&gt;&lt;/b&gt;&#160;&lt;b&gt;OVERVIEW AND&lt;/b&gt;&#160;&lt;b&gt;BASIS OF PRESENTATION&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;i&gt;Company Overview&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;HealthStream provides primarily Software-as-a-Service (SaaS) based applications for healthcare organizations&#x2014;all designed to improve business and clinical outcomes by supporting the people who deliver patient care. We are focused on helping healthcare organizations meet their ongoing clinical development, talent management, training, education, assessment, competency management, safety and compliance, scheduling, and provider credentialing, privileging, and enrollment needs. The Company is organized and operated according to our One HealthStream approach, with our hStream technology platform at the center of that approach. Increasingly, SaaS based applications in our diverse ecosystem of solutions utilize our proprietary hStream technology platform to enhance their value proposition by creating interoperability with and among other applications. As used in this Report, &#x201c;HealthStream,&#x201d; &#x201c;Company,&#x201d; &#x201c;we,&#x201d; &#x201c;us,&#x201d; and &#x201c;our&#x201d; mean HealthStream, Inc. and its subsidiaries unless the context indicates otherwise.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;i&gt;Basis of Presentation&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The accompanying unaudited Condensed Consolidated Financial Statements have been prepared in accordance with accounting principles generally accepted in the United States (&#x201c;US GAAP&#x201d;) for interim financial information and with the instructions to Form &lt;em style="font: inherit;"&gt;10&#x2011;Q&lt;/em&gt; and Article &lt;em style="font: inherit;"&gt;10&lt;/em&gt; of Regulation S&#x2011;X. Accordingly, condensed consolidated financial statements do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; include all of the information and footnotes required by US GAAP for complete financial statements. In the opinion of management, all adjustments (consisting of normal recurring accruals) considered necessary for a fair presentation have been included. All intercompany transactions have been eliminated in consolidation. Operating results for the&#160;&lt;em style="font: inherit;"&gt;three&lt;/em&gt; and &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt; are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; necessarily indicative of the results that &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be expected for the year ending &lt;em style="font: inherit;"&gt; December 31, 2023.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Condensed Consolidated Balance Sheet at &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&#160;was derived from the audited Consolidated Financial Statements at that date but does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; include all of the information and footnotes required by US GAAP for a complete set of financial statements. For further information, refer to the Consolidated Financial Statements and Notes thereto for the year ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&#160;(included in the Company's Annual Report on Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-K, filed with the Securities and Exchange Commission on &lt;em style="font: inherit;"&gt; February 28, 2023).&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;i&gt;Consolidated Segment Information&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;Our business is managed and organized around a single platform strategy, also referred to as our One HealthStream approach.&#160;At the center of this single platform strategy is our hStream technology platform.&#160;By facilitating interoperability among our applications, as well as &lt;em style="font: inherit;"&gt;third&lt;/em&gt; party applications,&#160;we believe that our hStream technology platform is allowing stand-alone applications to leverage each other to more efficiently and effectively empower our customers to manage their business and improve their outcomes.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;As indicated in the Company&#x2019;s&#160;Annual Report on Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-K for the year ended &lt;em style="font: inherit;"&gt; December 31, 2022, &lt;/em&gt;filed on &lt;em style="font: inherit;"&gt; February 28, 2023, &lt;/em&gt;the Company reached an inflection point in its efforts to operate according to its single platform strategy, One HealthStream. Since&#160;&lt;em style="font: inherit;"&gt; January 1, 2023, &lt;/em&gt;the Company&#x2019;s business has been&#160;organized and managed around a consolidated, enterprise approach, including with regard to technology, operations, accounting, internal reporting (including the nature of information reviewed by our key decision maker), organization structure, compensation, performance assessment, and resource allocation.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;As the result of these developments, the Company determined that Workforce Solutions and Provider Solutions were &lt;em style="font: inherit;"&gt;no&lt;/em&gt; longer separate operating segments or separate reportable segments as of &lt;em style="font: inherit;"&gt; January 1, 2023, &lt;/em&gt;such that the Company would &lt;em style="font: inherit;"&gt;no&lt;/em&gt; longer present &lt;em style="font: inherit;"&gt;two&lt;/em&gt; reportable segments for periods beginning on and after this date.&#160;As such, since &lt;em style="font: inherit;"&gt; January 1, 2023, &lt;/em&gt;the Company has had a single reportable segment, such that the Company is&#160;presenting historical financial information on a single segment basis in this Quarterly Report on Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-Q&#160;for the &lt;em style="font: inherit;"&gt;three&lt;/em&gt; and &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months&#160;ended &lt;em style="font: inherit;"&gt; June 30, 2023. &lt;/em&gt;For purposes of reporting historical &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; results in this Quarterly Report on Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-Q, we are reporting comparable performance on a consolidated basis unless otherwise indicated.&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;HEALTHSTREAM, INC.&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;NOTES TO CONDENSED CONSOLIDATED FINANCIAL STATEMENTS (UNAUDITED)&lt;/b&gt;&lt;/p&gt;
  </us-gaap:BusinessDescriptionAndBasisOfPresentationTextBlock>
    <us-gaap:RevenueFromContractWithCustomerTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416366">
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2.&lt;/em&gt; REVENUE RECOGNITION AND SALES COMMISSIONS&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;i&gt;Revenue Recognition&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Revenues are recognized when control of the promised goods or services is transferred to the customer in an amount that reflects the consideration the Company expects to be entitled in exchange for transferring those goods or services.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Revenue is recognized based on the following &lt;em style="font: inherit;"&gt;five&lt;/em&gt; step model:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt;&#160;&lt;/td&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt; &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#x2022;&lt;/p&gt; &lt;/td&gt;&lt;td style="vertical-align:top;width:auto;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Identification of the contract with a customer&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt;&#160;&lt;/td&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt; &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#x2022;&lt;/p&gt; &lt;/td&gt;&lt;td style="vertical-align:top;width:auto;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Identification of the performance obligations in the contract&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt;&#160;&lt;/td&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt; &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#x2022;&lt;/p&gt; &lt;/td&gt;&lt;td style="vertical-align:top;width:auto;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Determination of the transaction price&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt;&#160;&lt;/td&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt; &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#x2022;&lt;/p&gt; &lt;/td&gt;&lt;td style="vertical-align:top;width:auto;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Allocation of the transaction price to the performance obligations in the contract&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt;&#160;&lt;/td&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt; &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#x2022;&lt;/p&gt; &lt;/td&gt;&lt;td style="vertical-align:top;width:auto;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Recognition of revenue when, or as, the Company satisfies a performance obligation&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table represents revenues disaggregated by revenue source (in thousands). Sales taxes are excluded from revenues.&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Subscription services&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;66,506&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;62,471&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;132,521&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;124,546&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Professional services&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,692&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,167&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,623&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,459&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total revenues, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;69,198&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;65,638&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;138,144&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;131,005&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;div style="font-size: 10pt; text-align: justify;"&gt;
     &#160;
   &lt;/div&gt;
   &lt;div style="font-size: 10pt; text-align: justify;"&gt;
     For the&#160;
    &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, the Company recognized&#160;
    $0.2&#160;million and&#160;
    $0.4 million in impairment losses on receivables and contract assets arising from the Company's contracts with customers, respectively. For both the&#160;
    &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, the Company recognized&#160;
    $0.4&#160;million&#160;in impairment losses on receivables and contract assets arising from the Company&#x2019;s contracts with customers.
   &lt;/div&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Deferred revenue represents contract liabilities that are recorded when cash payments are received or are due in advance of our satisfaction of performance obligations. During the &lt;em style="font: inherit;"&gt;three&lt;/em&gt;&#160;months&#160;ended&#160;&lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, we recognized revenues of approximately $43.6&#160;million and $40.0&#160;million, respectively, from amounts included in deferred revenue at the beginning of the respective periods. During the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; we recognized revenues of approximately $62.1&#160;million and $56.0&#160;million, respectively, from amounts included in deferred revenue at the beginning of the respective periods. As of &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt;, approximately $511&#160;million of revenue is expected to&#160;be recognized from remaining performance obligations under contracts with customers. We expect to recognize revenue related to approximately&#160;&lt;span style="-sec-ix-hidden:c99978463"&gt;44%&lt;/span&gt;&#160;of these remaining performance obligations over the next 12 months, with the remaining amounts recognized thereafter.&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;i&gt;Sales Commissions&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Sales commissions earned by our sales force are considered incremental and recoverable costs of obtaining a contract with a customer.&#160;The Company recorded amortization of deferred commissions of approximately $2.8&#160;million and $2.5&#160;million for the &lt;em style="font: inherit;"&gt;three&lt;/em&gt;&#160;months&#160;ended &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and&#160;$5.5 million and&#160;$5.0 million for the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; respectively, which is included in sales and marketing expenses in the accompanying Condensed Consolidated Statements of Income.&lt;/p&gt;
  </us-gaap:RevenueFromContractWithCustomerTextBlock>
    <us-gaap:DisaggregationOfRevenueTableTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416367">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Subscription services&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;66,506&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;62,471&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;132,521&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;124,546&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Professional services&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,692&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,167&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,623&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,459&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total revenues, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;69,198&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;65,638&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;138,144&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;131,005&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:DisaggregationOfRevenueTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2023-04-01_2023-06-30_ProductOrServiceAxis-SubscriptionServicesMember"
      decimals="-3"
      id="c99978481"
      unitRef="USD">66506000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2022-04-01_2022-06-30_ProductOrServiceAxis-SubscriptionServicesMember"
      decimals="-3"
      id="c99978482"
      unitRef="USD">62471000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2023-01-01_2023-06-30_ProductOrServiceAxis-SubscriptionServicesMember"
      decimals="-3"
      id="c99978483"
      unitRef="USD">132521000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2022-01-01_2022-06-30_ProductOrServiceAxis-SubscriptionServicesMember"
      decimals="-3"
      id="c99978484"
      unitRef="USD">124546000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2023-04-01_2023-06-30_ProductOrServiceAxis-ProfessionalServicesMember"
      decimals="-3"
      id="c99978485"
      unitRef="USD">2692000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2022-04-01_2022-06-30_ProductOrServiceAxis-ProfessionalServicesMember"
      decimals="-3"
      id="c99978486"
      unitRef="USD">3167000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2023-01-01_2023-06-30_ProductOrServiceAxis-ProfessionalServicesMember"
      decimals="-3"
      id="c99978487"
      unitRef="USD">5623000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2022-01-01_2022-06-30_ProductOrServiceAxis-ProfessionalServicesMember"
      decimals="-3"
      id="c99978488"
      unitRef="USD">6459000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978489"
      unitRef="USD">69198000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978490"
      unitRef="USD">65638000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978491"
      unitRef="USD">138144000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978492"
      unitRef="USD">131005000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-5"
      id="c99978448"
      unitRef="USD">200000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-5"
      id="c99978449"
      unitRef="USD">400000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-5"
      id="c99978452"
      unitRef="USD">400000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-5"
      id="c99978456"
      unitRef="USD">43600000</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-7"
      id="c99978457"
      unitRef="USD">40000000.0</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-5"
      id="c99978460"
      unitRef="USD">62100000</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-6"
      id="c99978461"
      unitRef="USD">56000000.0</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:RevenueRemainingPerformanceObligation
      contextRef="i_2023-06-30"
      decimals="-6"
      id="c99978462"
      unitRef="USD">511000000</us-gaap:RevenueRemainingPerformanceObligation>
    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
      contextRef="i_2023-06-30_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2024-07-01"
      id="c99978464">P12M</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1>
    <us-gaap:AmortizationOfDeferredSalesCommissions
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-5"
      id="c99978465"
      unitRef="USD">2800000</us-gaap:AmortizationOfDeferredSalesCommissions>
    <us-gaap:AmortizationOfDeferredSalesCommissions
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-5"
      id="c99978466"
      unitRef="USD">2500000</us-gaap:AmortizationOfDeferredSalesCommissions>
    <us-gaap:AmortizationOfDeferredSalesCommissions
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-5"
      id="c99978469"
      unitRef="USD">5500000</us-gaap:AmortizationOfDeferredSalesCommissions>
    <us-gaap:AmortizationOfDeferredSalesCommissions
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-6"
      id="c99978470"
      unitRef="USD">5000000.0</us-gaap:AmortizationOfDeferredSalesCommissions>
    <us-gaap:IncomeTaxDisclosureTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416368">
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;3.&lt;/em&gt; INCOME TAXES&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Income taxes are accounted for using the asset and liability method, whereby deferred tax assets and liabilities are determined based on the temporary differences between the financial statement and tax bases of assets and liabilities measured at tax rates that will be in effect for the year in which the differences are expected to affect taxable income.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company computes its interim period provision for income taxes by applying the estimated annual effective tax rate to year-to-date pretax income or loss and adjusts the provision for discrete tax items recorded in the period. During&#160;the &lt;em style="font: inherit;"&gt;three&lt;/em&gt;&#160;months&#160;ended &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, the Company recorded a provision for income taxes of approximately $0.4&#160;million and&#160;$0.5 million, respectively.&#160;During the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; the Company recorded a provision for income taxes of&#160;$0.9 million and&#160;$1.4&#160;million, respectively. The Company&#x2019;s effective tax rate was 12%&#160;and 19%&#160;for the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, respectively. The Company&#x2019;s effective tax rate primarily reflects the statutory corporate income tax rate, the net effect of state taxes, foreign income taxes, and the effect of various permanent tax differences. The Company recognizes excess tax benefits and tax deficiencies associated with stock-based awards as a component of its provision for income taxes. During the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt;, the Company recorded discrete tax benefits of $0.5&#160;million,&#160;which consisted primarily of tax benefits associated with changes in state apportionment rules in Tennessee upon the enactment of the Tennessee Works Tax Act, in the amount of $0.6&#160;million, and stock-based awards, in the amount of $0.1 million, partially offset by $0.2 million of discrete tax expense related to reserves for uncertain tax positions. During the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2022&lt;/em&gt;, the Company recorded discrete tax benefits of&#160;$0.1&#160;million, which consisted primarily of a $0.2 million tax benefit associated with a nontaxable gain of $0.9 million recognized from the change in fair value of our previously held minority interest in CloudCME, LLC. This tax benefit was partially offset by $0.1 million of excess tax deficiencies associated with stock-based awards.&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;HEALTHSTREAM, INC.&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;NOTES TO CONDENSED CONSOLIDATED FINANCIAL STATEMENTS (UNAUDITED)&lt;/b&gt;&lt;/p&gt;
  </us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-5"
      id="c99979336"
      unitRef="USD">400000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-5"
      id="c99978496"
      unitRef="USD">500000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-5"
      id="c99978500"
      unitRef="USD">900000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-5"
      id="c99978501"
      unitRef="USD">1400000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2023-01-01_2023-06-30"
      decimals="2"
      id="c99978502"
      unitRef="Pure">0.12</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2022-01-01_2022-06-30"
      decimals="2"
      id="c99978503"
      unitRef="Pure">0.19</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <hstm:IncomeTaxExpenseBenefitDiscreteAdjustments
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-5"
      id="c99979347"
      unitRef="USD">500000</hstm:IncomeTaxExpenseBenefitDiscreteAdjustments>
    <hstm:IncomeTaxExpenseBenefitStateAppointmentChange
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-5"
      id="c99978507"
      unitRef="USD">-600000</hstm:IncomeTaxExpenseBenefitStateAppointmentChange>
    <hstm:IncomeTaxExpenseBenefitStockbasedAwards
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-5"
      id="c99978509"
      unitRef="USD">-100000</hstm:IncomeTaxExpenseBenefitStockbasedAwards>
    <hstm:ReserveForUncertainTaxPosition
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-5"
      id="c99978510"
      unitRef="USD">200000</hstm:ReserveForUncertainTaxPosition>
    <hstm:IncomeTaxExpenseBenefitDiscreteAdjustments
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-5"
      id="c99978512"
      unitRef="USD">-100000</hstm:IncomeTaxExpenseBenefitDiscreteAdjustments>
    <hstm:IncomeTaxExpenseNonTaxableGain
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-5"
      id="c99978513"
      unitRef="USD">200000</hstm:IncomeTaxExpenseNonTaxableGain>
    <hstm:IncomeTaxExpenseBenefitNontaxableGain
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-5"
      id="c99978514"
      unitRef="USD">900000</hstm:IncomeTaxExpenseBenefitNontaxableGain>
    <hstm:IncomeTaxExpenseBenefitDiscreteAdjustments
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-5"
      id="c99978515"
      unitRef="USD">-100000</hstm:IncomeTaxExpenseBenefitDiscreteAdjustments>
    <us-gaap:StockholdersEquityNoteDisclosureTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416369">
   &lt;p style="font-variant: normal; margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;4.&lt;/em&gt;&lt;/b&gt;&#160;&lt;b&gt;SHAREHOLDERS&lt;/b&gt;&#x2019;&lt;b&gt; EQUITY&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-variant: normal; margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&lt;b&gt;&lt;i&gt;Dividends on Common Stock&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt; text-align: justify;"&gt;On &lt;em style="font: inherit;"&gt; February 20, 2023, &lt;/em&gt;the Company's&#160;Board of Directors ("Board") approved a dividend policy, marking the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; quarterly cash dividend policy adopted by the Company ("Dividend Policy"). During the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023, &lt;/em&gt;the Board declared the following quarterly dividends under the Dividend Policy:&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: bottom;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;&lt;b&gt;Dividend Payment Date&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;&lt;b&gt;Dividend Declaration Date&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;Dividend Per Share&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;&lt;b&gt;Record Date&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;Cash Outlay&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;April 28, 2023&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;February 20, 2023&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;span style="-sec-ix-hidden:c100028096"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;0.025&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;April 17, 2023&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;767,000&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;June 23, 2023&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;April 24, 2023&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;span style="-sec-ix-hidden:c100028101"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;0.025&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;June 12, 2023&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;767,000&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td colspan="2" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;&lt;em style="font: inherit;"&gt;Total dividends&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double black;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double black;"&gt;0.050&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double black;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double black;"&gt;1,534,000&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt; text-align: justify;"&gt;&lt;span style="background-color:#ffffff;"&gt;Additionally, o&lt;/span&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;&lt;span style="background-color:#ffffff;"&gt;n &lt;em style="font: inherit;"&gt; July 24, 2023, &lt;/em&gt;the Board approved the Company&#x2019;s &lt;em style="font: inherit;"&gt;third&lt;/em&gt; quarterly cash dividend of $0.025 per share, payable on &lt;em style="font: inherit;"&gt; September&#160;&lt;/em&gt;&lt;span style="-sec-ix-hidden:c99978529"&gt;29,&lt;/span&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; to holders of record on &lt;em style="font: inherit;"&gt; &lt;span style="-sec-ix-hidden:c100027984"&gt;September 18, 2023&lt;/span&gt;.&#160;&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&lt;b&gt;&lt;i&gt;Stock-Based Compensation&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;The Company has stock awards outstanding under its &lt;em style="font: inherit;"&gt;2016&lt;/em&gt; Omnibus Incentive Plan and&#160;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt; Omnibus Incentive Plan. The Company accounts for its stock-based compensation plans using the fair-value based method for costs related to share-based payments, including restricted share units (&#x201c;RSUs&#x201d;) and stock options. During the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt;, the Company issued 72,923&#160;RSUs&#160;subject to service-based time vesting, with a weighted average grant date fair value of&#160;$25.36&#160;per share, measured based on the closing fair market value of the Company's stock on the date of the grant.&#160;During the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2022&lt;/em&gt;, the Company approved the grant of 137,055&#160;RSUs&#160;subject to service-based time vesting, with a weighted average grant date fair value of&#160;$20.27&#160;per share, measured based on the closing fair market value of the Company&#x2019;s stock on the date of grant.&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;During the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt;, the Company granted 138,000&#160;performance-based RSUs, the vesting of which occurs over a &lt;span style="-sec-ix-hidden:c99978542"&gt;five&lt;/span&gt;-year period and is contingent upon continued service and achieving certain performance criteria established by the Compensation Committee on an annual basis in increments of 15%, 20%, 20%, 20%, and 25% based on performance in &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2024,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2025,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2026,&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2027,&lt;/em&gt; respectively. The performance criteria for the &lt;em style="font: inherit;"&gt;first&lt;/em&gt;-year tranche, or 20,700&#160;of these performance-based RSUs, is based on &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&#160;adjusted EBITDA. The measurement date for these 20,700&#160;performance-based RSUs&#160;was established during the&#160;&lt;em style="font: inherit;"&gt;first&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; with a grant date fair value of $26.25&#160;per share, measured based on the closing fair market value of the Company's stock on the&#160;date the performance criteria was established.&#160;The performance criteria for the remaining 117,300 performance-based RSUs has &lt;em style="font: inherit;"&gt;not&lt;/em&gt; yet been determined and will be established on an annual basis in &lt;em style="font: inherit;"&gt;2024,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2025,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2026,&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2027,&lt;/em&gt; as applicable; therefore, the measurement date for these remaining 117,300 performance-based RSUs cannot be determined until the performance criteria have been established.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;During the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended&#160;&lt;em style="font: inherit;"&gt; June 30, 2022,&#160;&lt;/em&gt;the Company granted&#160;91,042&#160;performance-based RSUs, the vesting of which occurs over a&#160;&lt;span style="-sec-ix-hidden:c99979401"&gt;five&lt;/span&gt;-year period and is contingent upon continued service and achieving certain performance criteria established by the Compensation Committee on an annual basis in increments of&#160;15%,&#160;20%,&#160;20%,&#160;20%, and&#160;25% based on performance in&#160;&lt;em style="font: inherit;"&gt;2022,&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2023,&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2024,&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2025,&lt;/em&gt;&#160;and&#160;&lt;em style="font: inherit;"&gt;2026,&lt;/em&gt;&#160;respectively. The performance criteria for the&#160;&lt;em style="font: inherit;"&gt;second&lt;/em&gt;-year tranche, or&#160;18,210&#160;of these performance-based RSUs, is based on&#160;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&#160;adjusted EBITDA. The measurement date for these 18,210 performance-based RSUs was established&#160;during the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&#160;with a grant date fair value of $26.25&#160;per share, measured based on the closing fair market value of the Company's stock on the date the performance criteria was established. The performance criteria for the remaining&#160;59,178&#160;performance-based RSUs has&#160;&lt;em style="font: inherit;"&gt;not&lt;/em&gt;&#160;yet been determined and will be established on an annual basis in&#160;&lt;em style="font: inherit;"&gt;2024,&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2025,&lt;/em&gt;&#160;and&#160;&lt;em style="font: inherit;"&gt;2026,&lt;/em&gt;&#160;as applicable; therefore, the measurement date for these remaining&#160;59,178&#160;performance-based RSUs cannot be determined until the performance criteria have been established.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;"&gt;Total stock-based compensation expense recognized in the Condensed Consolidated Statements of Income is as follows (in thousands):&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Cost of revenues (excluding depreciation and amortization)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;50&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;99&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;82&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Product development&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;187&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;151&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;354&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;276&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Sales and marketing&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;131&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;101&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;243&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;184&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Other general and administrative&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;725&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;620&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,342&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,149&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Total stock-based compensation expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1,093&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;917&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,038&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1,691&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;"&gt;&#160;&lt;/p&gt;


  </us-gaap:StockholdersEquityNoteDisclosureTextBlock>
    <us-gaap:DividendsDeclaredTableTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416398">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: bottom;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;&lt;b&gt;Dividend Payment Date&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;&lt;b&gt;Dividend Declaration Date&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;Dividend Per Share&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;&lt;b&gt;Record Date&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;Cash Outlay&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;April 28, 2023&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;February 20, 2023&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;span style="-sec-ix-hidden:c100028096"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;0.025&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;April 17, 2023&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;767,000&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;June 23, 2023&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;April 24, 2023&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;span style="-sec-ix-hidden:c100028101"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;0.025&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;June 12, 2023&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;767,000&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td colspan="2" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 28%;"&gt;&lt;em style="font: inherit;"&gt;Total dividends&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double black;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double black;"&gt;0.050&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double black;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double black;"&gt;1,534,000&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:DividendsDeclaredTableTextBlock>
    <us-gaap:DividendsPayableDateDeclaredDayMonthAndYear
      contextRef="d_2023-01-01_2023-06-30_DividendsAxis-FirstQuarterDividendsMember"
      id="c100028095">2023-02-20</us-gaap:DividendsPayableDateDeclaredDayMonthAndYear>
    <us-gaap:DividendsPayableAmountPerShare
      contextRef="i_2023-06-30_DividendsAxis-FirstQuarterDividendsMember"
      decimals="INF"
      id="c100028097"
      unitRef="USDPerShare">0.025</us-gaap:DividendsPayableAmountPerShare>
    <us-gaap:DividendsPayableDateOfRecordDayMonthAndYear
      contextRef="d_2023-01-01_2023-06-30_DividendsAxis-FirstQuarterDividendsMember"
      id="c100028098">2023-04-17</us-gaap:DividendsPayableDateOfRecordDayMonthAndYear>
    <us-gaap:DividendsCash
      contextRef="d_2023-01-01_2023-06-30_DividendsAxis-FirstQuarterDividendsMember"
      decimals="INF"
      id="c100028099"
      unitRef="USD">767000</us-gaap:DividendsCash>
    <us-gaap:DividendsPayableDateDeclaredDayMonthAndYear
      contextRef="d_2023-01-01_2023-06-30_DividendsAxis-SecondQuarterDividendsMember"
      id="c100028100">2023-04-24</us-gaap:DividendsPayableDateDeclaredDayMonthAndYear>
    <us-gaap:DividendsPayableAmountPerShare
      contextRef="i_2023-06-30_DividendsAxis-SecondQuarterDividendsMember"
      decimals="INF"
      id="c100028102"
      unitRef="USDPerShare">0.025</us-gaap:DividendsPayableAmountPerShare>
    <us-gaap:DividendsPayableDateOfRecordDayMonthAndYear
      contextRef="d_2023-01-01_2023-06-30_DividendsAxis-SecondQuarterDividendsMember"
      id="c100028103">2023-06-12</us-gaap:DividendsPayableDateOfRecordDayMonthAndYear>
    <us-gaap:DividendsCash
      contextRef="d_2023-01-01_2023-06-30_DividendsAxis-SecondQuarterDividendsMember"
      decimals="INF"
      id="c100028104"
      unitRef="USD">767000</us-gaap:DividendsCash>
    <us-gaap:DividendsPayableAmountPerShare
      contextRef="i_2023-06-30"
      decimals="INF"
      id="c100028107"
      unitRef="USDPerShare">0.050</us-gaap:DividendsPayableAmountPerShare>
    <us-gaap:DividendsCash
      contextRef="d_2023-01-01_2023-06-30"
      decimals="INF"
      id="c100028109"
      unitRef="USD">1534000</us-gaap:DividendsCash>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="d_2023-07-24_2023-07-24_SubsequentEventTypeAxis-SubsequentEventMember"
      decimals="INF"
      id="c99978528"
      unitRef="USDPerShare">0.025</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-RestrictedStockUnitsRSUMember"
      decimals="INF"
      id="c99978535"
      unitRef="Share">72923</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-RestrictedStockUnitsRSUMember"
      decimals="INF"
      id="c99978536"
      unitRef="USDPerShare">25.36</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-RestrictedStockUnitsRSUMember"
      decimals="INF"
      id="c99978538"
      unitRef="Share">137055</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-RestrictedStockUnitsRSUMember"
      decimals="INF"
      id="c99978539"
      unitRef="USDPerShare">20.27</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="INF"
      id="c99978541"
      unitRef="Share">138000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <hstm:Sharebasedcompensationarrangementbysharebasedpaymentawardincrementalperformancepercentageyearone
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="2"
      id="c99978543"
      unitRef="Pure">0.15</hstm:Sharebasedcompensationarrangementbysharebasedpaymentawardincrementalperformancepercentageyearone>
    <hstm:Sharebasedcompensationarrangementbysharebasedpaymentawardincrementalperformancepercentageyeartwo
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="1"
      id="c99978544"
      unitRef="Pure">0.20</hstm:Sharebasedcompensationarrangementbysharebasedpaymentawardincrementalperformancepercentageyeartwo>
    <hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearThree
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="1"
      id="c99978545"
      unitRef="Pure">0.20</hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearThree>
    <hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearFour
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="1"
      id="c99978546"
      unitRef="Pure">0.20</hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearFour>
    <hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearFive
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="2"
      id="c99978547"
      unitRef="Pure">0.25</hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearFive>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-TwoThousandTwentyThreePerformanceMember"
      decimals="INF"
      id="c99978554"
      unitRef="Share">20700</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-TwoThousandTwentyThreePerformanceMember"
      decimals="INF"
      id="c99978556"
      unitRef="Share">20700</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-TwoThousandTwentyThreePerformanceMember"
      decimals="INF"
      id="c99978558"
      unitRef="USDPerShare">26.25</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-NotBasedOn2023PerformanceMember"
      decimals="INF"
      id="c99978559"
      unitRef="Share">117300</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2023-01-01_2023-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-NotBasedOn2023PerformanceMember"
      decimals="INF"
      id="c99978565"
      unitRef="Share">117300</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="INF"
      id="c99979400"
      unitRef="Share">91042</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <hstm:Sharebasedcompensationarrangementbysharebasedpaymentawardincrementalperformancepercentageyearone
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="2"
      id="c99979402"
      unitRef="Pure">0.15</hstm:Sharebasedcompensationarrangementbysharebasedpaymentawardincrementalperformancepercentageyearone>
    <hstm:Sharebasedcompensationarrangementbysharebasedpaymentawardincrementalperformancepercentageyeartwo
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="1"
      id="c99979403"
      unitRef="Pure">0.20</hstm:Sharebasedcompensationarrangementbysharebasedpaymentawardincrementalperformancepercentageyeartwo>
    <hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearThree
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="1"
      id="c99979404"
      unitRef="Pure">0.20</hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearThree>
    <hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearFour
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="1"
      id="c99979405"
      unitRef="Pure">0.20</hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearFour>
    <hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearFive
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember"
      decimals="2"
      id="c99979406"
      unitRef="Pure">0.25</hstm:ShareBasedCompensationArrangementByShareBasedPaymentAwardIncrementalPerformancePercentageYearFive>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-TwoThousandTwentyThreePerformanceMember"
      decimals="INF"
      id="c99979413"
      unitRef="Share">18210</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-TwoThousandTwentyThreePerformanceMember"
      decimals="INF"
      id="c99979415"
      unitRef="Share">18210</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-TwoThousandTwentyThreePerformanceMember"
      decimals="INF"
      id="c99979418"
      unitRef="USDPerShare">26.25</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-NotBasedOn2023PerformanceMember"
      decimals="INF"
      id="c99979419"
      unitRef="Share">59178</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2022-01-01_2022-06-30_AwardTypeAxis-PerformanceBasedRestrictedStockUnitsRsusMember_VestingAxis-NotBasedOn2023PerformanceMember"
      decimals="INF"
      id="c99979424"
      unitRef="Share">59178</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416370">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Cost of revenues (excluding depreciation and amortization)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;50&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;99&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;82&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Product development&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;187&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;151&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;354&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;276&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Sales and marketing&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;131&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;101&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;243&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;184&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Other general and administrative&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;725&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;620&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,342&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,149&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Total stock-based compensation expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1,093&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;917&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,038&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1,691&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-04-01_2023-06-30_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-4"
      id="c99978576"
      unitRef="USD">50000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-04-01_2022-06-30_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-3"
      id="c99978577"
      unitRef="USD">45000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-01-01_2023-06-30_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-3"
      id="c99978578"
      unitRef="USD">99000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-01-01_2022-06-30_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-3"
      id="c99978579"
      unitRef="USD">82000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-04-01_2023-06-30_IncomeStatementLocationAxis-ProductDevelopmentMember"
      decimals="-3"
      id="c99978580"
      unitRef="USD">187000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-04-01_2022-06-30_IncomeStatementLocationAxis-ProductDevelopmentMember"
      decimals="-3"
      id="c99978581"
      unitRef="USD">151000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-01-01_2023-06-30_IncomeStatementLocationAxis-ProductDevelopmentMember"
      decimals="-3"
      id="c99978582"
      unitRef="USD">354000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-01-01_2022-06-30_IncomeStatementLocationAxis-ProductDevelopmentMember"
      decimals="-3"
      id="c99978583"
      unitRef="USD">276000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-04-01_2023-06-30_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"
      decimals="-3"
      id="c99978584"
      unitRef="USD">131000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-04-01_2022-06-30_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"
      decimals="-3"
      id="c99978585"
      unitRef="USD">101000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-01-01_2023-06-30_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"
      decimals="-3"
      id="c99978586"
      unitRef="USD">243000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-01-01_2022-06-30_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"
      decimals="-3"
      id="c99978587"
      unitRef="USD">184000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-04-01_2023-06-30_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"
      decimals="-3"
      id="c99978588"
      unitRef="USD">725000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-04-01_2022-06-30_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"
      decimals="-4"
      id="c99978589"
      unitRef="USD">620000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-01-01_2023-06-30_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"
      decimals="-3"
      id="c99978590"
      unitRef="USD">1342000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-01-01_2022-06-30_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"
      decimals="-3"
      id="c99978591"
      unitRef="USD">1149000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978592"
      unitRef="USD">1093000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978593"
      unitRef="USD">917000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978594"
      unitRef="USD">2038000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978595"
      unitRef="USD">1691000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EarningsPerShareTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416371">
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;5.&lt;/em&gt;&lt;/b&gt;&#160;&lt;b&gt;EARNINGS PER SHARE&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Basic earnings per share is computed by dividing the net income available to common shareholders for the period by the weighted average number of common shares outstanding during the period. Diluted earnings per share is computed by dividing the net income available to common shareholders for the period by the weighted average number of potentially dilutive common and common equivalent shares outstanding during the period. Common equivalent shares are composed of incremental common shares issuable upon the exercise of stock options and RSUs subject to vesting. The dilutive effect of common equivalent shares is included in diluted earnings per share by application of the treasury stock method. The total number of common equivalent shares excluded from the calculations of diluted earnings per share, due to their anti-dilutive effect or contingent performance conditions, was approximately 225,000&#160;and 228,000&#160;for the &lt;em style="font: inherit;"&gt;three&lt;/em&gt;&#160;months&#160;ended &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, respectively, and&#160;246,000 and&#160;223,000 for the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; respectively.&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table sets forth the computation of basic and diluted earnings per share (in thousands, except per share data):&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Numerator:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,133&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,083&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;6,756&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;5,976&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Denominator:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Weighted-average shares outstanding&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;30,684&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;30,491&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;30,638&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;30,723&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Effect of dilutive shares&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;91&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;21&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;79&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;21&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Weighted-average diluted shares&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,775&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,512&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,717&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,744&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Net income per share:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Basic&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.10&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.22&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.19&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.10&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.22&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.19&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&#160;&lt;/p&gt;
  </us-gaap:EarningsPerShareTextBlock>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2023-04-01_2023-06-30"
      decimals="INF"
      id="c99978597"
      unitRef="Share">225000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2022-04-01_2022-06-30"
      decimals="INF"
      id="c99978598"
      unitRef="Share">228000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2023-01-01_2023-06-30"
      decimals="INF"
      id="c99978601"
      unitRef="Share">246000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2022-01-01_2022-06-30"
      decimals="INF"
      id="c99978602"
      unitRef="Share">223000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416372">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Numerator:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,133&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,083&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;6,756&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;5,976&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Denominator:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Weighted-average shares outstanding&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;30,684&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;30,491&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;30,638&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;30,723&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Effect of dilutive shares&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;91&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;21&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;79&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;21&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Weighted-average diluted shares&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,775&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,512&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,717&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,744&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Net income per share:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Basic&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.10&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.22&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.19&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.10&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.22&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.19&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978615"
      unitRef="USD">4133000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978616"
      unitRef="USD">3083000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978617"
      unitRef="USD">6756000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978618"
      unitRef="USD">5976000</us-gaap:NetIncomeLoss>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978620"
      unitRef="Share">30684000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978621"
      unitRef="Share">30491000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978622"
      unitRef="Share">30638000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978623"
      unitRef="Share">30723000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978624"
      unitRef="Share">91000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978625"
      unitRef="Share">21000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978626"
      unitRef="Share">79000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978627"
      unitRef="Share">21000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2023-04-01_2023-06-30"
      decimals="-3"
      id="c99978628"
      unitRef="Share">30775000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2022-04-01_2022-06-30"
      decimals="-3"
      id="c99978629"
      unitRef="Share">30512000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2023-01-01_2023-06-30"
      decimals="-3"
      id="c99978630"
      unitRef="Share">30717000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2022-01-01_2022-06-30"
      decimals="-3"
      id="c99978631"
      unitRef="Share">30744000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2023-04-01_2023-06-30"
      decimals="INF"
      id="c99978633"
      unitRef="USDPerShare">0.13</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2022-04-01_2022-06-30"
      decimals="INF"
      id="c99978634"
      unitRef="USDPerShare">0.10</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2023-01-01_2023-06-30"
      decimals="INF"
      id="c99978635"
      unitRef="USDPerShare">0.22</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2022-01-01_2022-06-30"
      decimals="INF"
      id="c99978636"
      unitRef="USDPerShare">0.19</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2023-04-01_2023-06-30"
      decimals="INF"
      id="c99978637"
      unitRef="USDPerShare">0.13</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2022-04-01_2022-06-30"
      decimals="INF"
      id="c99978638"
      unitRef="USDPerShare">0.10</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2023-01-01_2023-06-30"
      decimals="INF"
      id="c99978639"
      unitRef="USDPerShare">0.22</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2022-01-01_2022-06-30"
      decimals="INF"
      id="c99978640"
      unitRef="USDPerShare">0.19</us-gaap:EarningsPerShareDiluted>
    <us-gaap:InvestmentsInDebtAndMarketableEquitySecuritiesAndCertainTradingAssetsDisclosureTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416373">
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;6.&lt;/em&gt; MARKETABLE SECURITIES&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;"&gt;The fair value of marketable securities, which were all classified as available for sale and which the Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; intend to sell nor will the Company be required to sell prior to recovery of their amortized cost basis, included the following (in thousands):&lt;/p&gt; &#160;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30, 2023&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Adjusted Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Level 2:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; text-indent: 27pt; font-size: 10pt; font-family: Times New Roman;"&gt;U.S. treasury securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;30,207&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(51&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;30,158&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,207&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(51&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,158&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
    &#160;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31, 2022&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Adjusted Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Level 2:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;"&gt;U.S. treasury securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,882&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#x2014;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,885&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,882&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#x2014;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,885&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The carrying amounts reported in the Condensed Consolidated Balance Sheets approximate fair value based on quoted market prices or alternative pricing sources and models utilizing market observable inputs. As of &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt;, the Company did &lt;span style="-sec-ix-hidden:c99978643"&gt;not&lt;/span&gt; recognize any allowance for credit impairments on its available for sale debt securities. All investments in marketable securities are classified as current assets on the Condensed Consolidated Balance Sheets because the underlying securities mature within &lt;em style="font: inherit;"&gt;one&lt;/em&gt; year from the balance sheet date.&lt;/p&gt;
   &lt;div style="font-size: 10pt;"&gt;
     &#160;
   &lt;/div&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:InvestmentsInDebtAndMarketableEquitySecuritiesAndCertainTradingAssetsDisclosureTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock
      contextRef="d_2023-01-01_2023-06-30"
      id="c8B2D888A-4D0B-4A57-9042-DE53324758A8">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30, 2023&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Adjusted Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Level 2:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; text-indent: 27pt; font-size: 10pt; font-family: Times New Roman;"&gt;U.S. treasury securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;30,207&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(51&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;30,158&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,207&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(51&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,158&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31, 2022&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Adjusted Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Level 2:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;"&gt;U.S. treasury securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,882&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#x2014;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,885&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,882&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#x2014;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,885&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i_2023-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FinancialInstrumentAxis-USTreasurySecuritiesMember"
      decimals="-3"
      id="c99978655"
      unitRef="USD">30207000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i_2023-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FinancialInstrumentAxis-USTreasurySecuritiesMember"
      decimals="-3"
      id="c99978656"
      unitRef="USD">2000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i_2023-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FinancialInstrumentAxis-USTreasurySecuritiesMember"
      decimals="-3"
      id="c99978657"
      unitRef="USD">51000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2023-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FinancialInstrumentAxis-USTreasurySecuritiesMember"
      decimals="-3"
      id="c99978658"
      unitRef="USD">30158000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978659"
      unitRef="USD">30207000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978660"
      unitRef="USD">2000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978661"
      unitRef="USD">51000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2023-06-30"
      decimals="-3"
      id="c99978662"
      unitRef="USD">30158000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FinancialInstrumentAxis-USTreasurySecuritiesMember"
      decimals="-3"
      id="c99978672"
      unitRef="USD">7882000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FinancialInstrumentAxis-USTreasurySecuritiesMember"
      decimals="-3"
      id="c99978673"
      unitRef="USD">3000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FinancialInstrumentAxis-USTreasurySecuritiesMember"
      decimals="-3"
      id="c99978674"
      unitRef="USD">-0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FinancialInstrumentAxis-USTreasurySecuritiesMember"
      decimals="-3"
      id="c99978675"
      unitRef="USD">7885000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978676"
      unitRef="USD">7882000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978677"
      unitRef="USD">3000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978678"
      unitRef="USD">-0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c99978679"
      unitRef="USD">7885000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:BusinessCombinationDisclosureTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416376">
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;7.&lt;/em&gt;&lt;/b&gt;&#160;&lt;b&gt;BUSINESS COMBINATIONS&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;On&#160;&lt;em style="font: inherit;"&gt; December 31, 2022&lt;/em&gt;&lt;i&gt;,&lt;/i&gt;&#160;the Company acquired substantially all of the assets&#160;of Electronic Education Documentation System, LLC&#160;(d/b/a eeds) ("eeds"), an Asheville, North Carolina-based healthcare technology company offering a SaaS-based continuing education (CME/CE) management system for healthcare organizations, for approximately $6.6&#160;million in cash, reflecting customary purchase price adjustments made to the purchase price paid of $7.0&#160;million. After the filing&#160;of the Company&#x2019;s&#160;Annual Report on Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-K for the year ended &lt;em style="font: inherit;"&gt; December 31, 2022&#160;&lt;/em&gt;on &lt;em style="font: inherit;"&gt; February 28, 2023, &lt;/em&gt;the Company received an updated valuation report for the acquisition from a &lt;em style="font: inherit;"&gt;third&lt;/em&gt;-party valuation firm. Based on the results of that valuation report, the Company has estimated the fair value of the customer relationships, developed technology, non-compete, and trade name intangible assets to be $2.6&#160;million, $1.9 million, $0.2 million, and $0.1 million, respectively. As a result, the fair value of the customer relationships and non-compete intangible assets were increased by $2.0 million and $0.1 million during the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023, &lt;/em&gt;respectively, while the developed technology and trade name intangible assets were decreased by $0.8 million and $20,000 during the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023, &lt;/em&gt;respectively, due to this new information, with a corresponding decrease to goodwill of $1.3 million for the net change in the fair value of identifiable intangible assets.&lt;/p&gt;
  </us-gaap:BusinessCombinationDisclosureTextBlock>
    <us-gaap:PaymentsToAcquireBusinessesGross
      contextRef="d_2022-12-31_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember"
      decimals="-5"
      id="c99978681"
      unitRef="USD">6600000</us-gaap:PaymentsToAcquireBusinessesGross>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="d_2022-12-31_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember"
      decimals="-6"
      id="c99978682"
      unitRef="USD">7000000.0</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-5"
      id="c99978685"
      unitRef="USD">2600000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-DevelopedTechnologyRightsMember"
      decimals="-5"
      id="c99978686"
      unitRef="USD">1900000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-5"
      id="c99978687"
      unitRef="USD">200000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles
      contextRef="i_2022-12-31_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-5"
      id="c99978688"
      unitRef="USD">100000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles>
    <us-gaap:FiniteLivedIntangibleAssetsPurchaseAccountingAdjustments
      contextRef="d_2023-01-01_2023-06-30_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-6"
      id="c99978689"
      unitRef="USD">2000000.0</us-gaap:FiniteLivedIntangibleAssetsPurchaseAccountingAdjustments>
    <us-gaap:FiniteLivedIntangibleAssetsPurchaseAccountingAdjustments
      contextRef="d_2023-01-01_2023-06-30_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-5"
      id="c99978690"
      unitRef="USD">100000</us-gaap:FiniteLivedIntangibleAssetsPurchaseAccountingAdjustments>
    <us-gaap:FiniteLivedIntangibleAssetsPurchaseAccountingAdjustments
      contextRef="d_2023-01-01_2023-06-30_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-DevelopedTechnologyRightsMember"
      decimals="-5"
      id="c99978692"
      unitRef="USD">-800000</us-gaap:FiniteLivedIntangibleAssetsPurchaseAccountingAdjustments>
    <us-gaap:FiniteLivedIntangibleAssetsPurchaseAccountingAdjustments
      contextRef="d_2023-01-01_2023-06-30_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="INF"
      id="c99978693"
      unitRef="USD">-20000</us-gaap:FiniteLivedIntangibleAssetsPurchaseAccountingAdjustments>
    <us-gaap:GoodwillPurchaseAccountingAdjustments
      contextRef="d_2023-01-01_2023-06-30_BusinessAcquisitionAxis-ElectronicEducationDocumentationSystemLlcMember"
      decimals="-5"
      id="c99978695"
      unitRef="USD">-1300000</us-gaap:GoodwillPurchaseAccountingAdjustments>
    <us-gaap:DebtDisclosureTextBlock contextRef="d_2023-01-01_2023-06-30" id="c2416377">
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;8.&lt;/em&gt; DEBT&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;span style="text-decoration: underline; "&gt;Revolving Credit Facility&lt;/span&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;On &lt;em style="font: inherit;"&gt; October 28, 2020, &lt;/em&gt;the Company entered into a Third Amendment to Revolving Credit Agreement ("Revolving Credit Facility"), amending the Revolving Credit Facility dated as of &lt;em style="font: inherit;"&gt; November 24, 2014 &lt;/em&gt;with Truist Bank, successor by merger to SunTrust Bank ("Truist"), extending the maturity date to &lt;em style="font: inherit;"&gt; October 28, 2023. &lt;/em&gt;Under the Revolving Credit Facility, the Company &lt;em style="font: inherit;"&gt; may &lt;/em&gt;borrow up to $65.0 million, which includes a $5.0 million swing line sub-facility and a $5.0 million letter of credit sub-facility, as well as an accordion feature that allows the Company to increase the Revolving Credit Facility by a total of up to $25.0 million, subject to securing additional commitments from existing lenders or new lending institutions.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;span style="background-color:#ffffff;"&gt;At the Company&#x2019;s election, the borrowings under the Revolving Credit Facility bear interest at either (&lt;em style="font: inherit;"&gt;1&lt;/em&gt;) a rate per annum equal to the highest of Truist&#x2019;s prime rate or 0.5% in excess of the Federal Funds Rate or 1.0% in excess of &lt;em style="font: inherit;"&gt;one&lt;/em&gt;-month LIBOR (the "Base Rate"), plus an applicable margin, or (&lt;em style="font: inherit;"&gt;2&lt;/em&gt;) the one, two, three, or &lt;em style="font: inherit;"&gt;six&lt;/em&gt;-month per annum LIBOR for deposits in the applicable currency (the "Eurocurrency Rate"), as selected by the Company, plus an applicable margin. The applicable margin for Eurocurrency Rate loans depends on the Company&#x2019;s funded debt leverage ratio and varies from 1.50% to 1.75%. The applicable margin for Base Rate loans depends on the Company&#x2019;s funded debt leverage ratio and varies from 0.50% to 0.75%. Commitment fees and letter of credit fees are also payable under the Revolving Credit Facility. Principal is payable in full at maturity on &lt;em style="font: inherit;"&gt; October 28, 2023, &lt;/em&gt;and there are &lt;em style="font: inherit;"&gt;no&lt;/em&gt; scheduled principal payments prior to maturity. The Company is required to pay a commitment fee ranging between 20 and 30 basis points per annum of the average daily unused portion of the Revolving Credit Facility, depending on the Company&#x2019;s funded debt leverage ratio. The obligations under the Revolving Credit Facility are guaranteed by each of the Company&#x2019;s subsidiaries. As of &lt;em style="font: inherit;"&gt; June 30, 2023, &lt;/em&gt;the LIBOR interest rate benchmark has been phased out, triggering a Benchmark Transition Event as defined by the Company's Revolving Credit Facility. Accordingly, should the Company elect to borrow&#160;from its Revolving Credit Facility, LIBOR will be replaced with the Benchmark Replacement (as defined by the Revolving Credit Facility) for purposes of calculating an interest rate and the Revolving Credit Facility will be amended to reflect the same; until such Benchmark Replacement is implemented, loans requested by the Company under the Revolving Credit Facility must be made as Base Rate loans, as described above.&lt;/span&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The purpose of the Revolving Credit Facility is for general working capital needs, permitted acquisitions (as defined in the Revolving Credit Facility), and for stock repurchase and/or redemption transactions that the Company &lt;em style="font: inherit;"&gt; may &lt;/em&gt;authorize.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Revolving Credit Facility contains certain covenants that, among other things, restrict additional indebtedness, liens and encumbrances, changes to the character of the Company&#x2019;s business, acquisitions, asset dispositions, mergers and consolidations, sale or discount of receivables, creation or acquisitions of additional subsidiaries, and other matters customarily restricted in such agreements.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In addition, the Revolving Credit Facility requires the Company to meet certain financial tests, including, without limitation:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt; &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#x2022;&lt;/p&gt; &lt;/td&gt;&lt;td style="vertical-align:top;width:auto;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;a funded debt leverage ratio (consolidated debt/consolidated EBITDA) of &lt;em style="font: inherit;"&gt;not&lt;/em&gt; greater than 3.0 to &lt;em style="font: inherit;"&gt;1.0;&lt;/em&gt; and&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="vertical-align:top;width:1.9%;"&gt; &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#x2022;&lt;/p&gt; &lt;/td&gt;&lt;td style="vertical-align:top;width:auto;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;an interest coverage ratio (consolidated EBITDA/consolidated interest expense) of &lt;em style="font: inherit;"&gt;not&lt;/em&gt; less than 3.0 to &lt;em style="font: inherit;"&gt;1.0.&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;As of &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt;, the Company was in compliance with all covenants. There were no balances outstanding on the Revolving Credit Facility as of or during the &lt;em style="font: inherit;"&gt;three&lt;/em&gt; and &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2023&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

  </us-gaap:DebtDisclosureTextBlock>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember"
      decimals="-6"
      id="c99978698"
      unitRef="USD">65000000.0</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_ShortTermDebtTypeAxis-SwingLineSubfacilityMember"
      decimals="-6"
      id="c99978699"
      unitRef="USD">5000000.0</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_ShortTermDebtTypeAxis-LetterOfCreditSubfacilityMember"
      decimals="-6"
      id="c99978700"
      unitRef="USD">5000000.0</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <hstm:LineOfCreditFacilityIncreasedFacilitySizeDueToAccordionFeature
      contextRef="i_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember"
      decimals="-6"
      id="c99978701"
      unitRef="USD">25000000.0</hstm:LineOfCreditFacilityIncreasedFacilitySizeDueToAccordionFeature>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_VariableRateAxis-FederalFundsEffectiveSwapRateMember"
      decimals="3"
      id="c99978703"
      unitRef="Pure">0.005</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_VariableRateAxis-BaseRateMember"
      decimals="2"
      id="c99978704"
      unitRef="Pure">0.010</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <hstm:LineOfCreditFacilityPercentageOfApplicableMarginForBorrowings
      contextRef="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_RangeAxis-MinimumMember_VariableRateAxis-EurodollarMember"
      decimals="3"
      id="c99978708"
      unitRef="Pure">0.0150</hstm:LineOfCreditFacilityPercentageOfApplicableMarginForBorrowings>
    <hstm:LineOfCreditFacilityPercentageOfApplicableMarginForBorrowings
      contextRef="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_RangeAxis-MaximumMember_VariableRateAxis-EurodollarMember"
      decimals="4"
      id="c99978709"
      unitRef="Pure">0.0175</hstm:LineOfCreditFacilityPercentageOfApplicableMarginForBorrowings>
    <hstm:LineOfCreditFacilityPercentageOfApplicableMarginForBorrowings
      contextRef="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_RangeAxis-MinimumMember_VariableRateAxis-BaseRateMember"
      decimals="3"
      id="c99978710"
      unitRef="Pure">0.0050</hstm:LineOfCreditFacilityPercentageOfApplicableMarginForBorrowings>
    <hstm:LineOfCreditFacilityPercentageOfApplicableMarginForBorrowings
      contextRef="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_LongtermDebtTypeAxis-ThirdAmendmentMember_RangeAxis-MaximumMember_VariableRateAxis-BaseRateMember"
      decimals="4"
      id="c99978711"
      unitRef="Pure">0.0075</hstm:LineOfCreditFacilityPercentageOfApplicableMarginForBorrowings>
    <us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage
      contextRef="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_RangeAxis-MinimumMember"
      decimals="3"
      id="c99978713"
      unitRef="Pure">0.0020</us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage>
    <us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage
      contextRef="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember_RangeAxis-MaximumMember"
      decimals="3"
      id="c99978714"
      unitRef="Pure">0.0030</us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage>
    <hstm:DebtInstrumentCovenantMaximumFundedDebtLeverageRatio
      contextRef="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember"
      decimals="INF"
      id="c99978716"
      unitRef="Pure">3.0</hstm:DebtInstrumentCovenantMaximumFundedDebtLeverageRatio>
    <hstm:DebtInstrumentCovenantInterestCoverageRatio
      contextRef="d_2020-10-28_2020-10-28_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember"
      decimals="INF"
      id="c99978719"
      unitRef="Pure">3.0</hstm:DebtInstrumentCovenantInterestCoverageRatio>
    <us-gaap:LineOfCredit
      contextRef="i_2023-06-30_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-TruistBankMember"
      decimals="-3"
      id="c99978721"
      unitRef="USD">0</us-gaap:LineOfCredit>
</xbrl>
